aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/testdir/samples/memfile_test.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/testdir/samples/memfile_test.c')
-rw-r--r--src/nvim/testdir/samples/memfile_test.c148
1 files changed, 0 insertions, 148 deletions
diff --git a/src/nvim/testdir/samples/memfile_test.c b/src/nvim/testdir/samples/memfile_test.c
deleted file mode 100644
index 73f67fb250..0000000000
--- a/src/nvim/testdir/samples/memfile_test.c
+++ /dev/null
@@ -1,148 +0,0 @@
-// This is an open source non-commercial project. Dear PVS-Studio, please check
-// it. PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
-
-// uncrustify:off
-
-/* vi:set ts=8 sts=4 sw=4 noet:
- *
- * VIM - Vi IMproved by Bram Moolenaar
- *
- * Do ":help uganda" in Vim to read copying and usage conditions.
- * Do ":help credits" in Vim to see a list of people who contributed.
- * See README.txt for an overview of the Vim source code.
- */
-
-/*
- * memfile_test.c: Unittests for memfile.c
- * Mostly by Ivan Krasilnikov.
- */
-
-#undef NDEBUG
-#include <assert.h>
-
-/* Must include main.c because it contains much more than just main() */
-#define NO_VIM_MAIN
-#include "main.c"
-
-/* This file has to be included because the tested functions are static */
-#include "memfile.c"
-
-#define index_to_key(i) ((i) ^ 15167)
-#define TEST_COUNT 50000
-
-/*
- * Test mf_hash_*() functions.
- */
- static void
-test_mf_hash(void)
-{
- mf_hashtab_T ht;
- mf_hashitem_T *item;
- blocknr_T key;
- size_t i;
- size_t num_buckets;
-
- mf_hash_init(&ht);
-
- /* insert some items and check invariants */
- for (i = 0; i < TEST_COUNT; i++)
- {
- assert(ht.mht_count == i);
-
- /* check that number of buckets is a power of 2 */
- num_buckets = ht.mht_mask + 1;
- assert(num_buckets > 0 && (num_buckets & (num_buckets - 1)) == 0);
-
- /* check load factor */
- assert(ht.mht_count <= (num_buckets << MHT_LOG_LOAD_FACTOR));
-
- if (i < (MHT_INIT_SIZE << MHT_LOG_LOAD_FACTOR))
- {
- /* first expansion shouldn't have occurred yet */
- assert(num_buckets == MHT_INIT_SIZE);
- assert(ht.mht_buckets == ht.mht_small_buckets);
- }
- else
- {
- assert(num_buckets > MHT_INIT_SIZE);
- assert(ht.mht_buckets != ht.mht_small_buckets);
- }
-
- key = index_to_key(i);
- assert(mf_hash_find(&ht, key) == NULL);
-
- /* allocate and add new item */
- item = (mf_hashitem_T *)lalloc_clear(sizeof(*item), FALSE);
- assert(item != NULL);
- item->mhi_key = key;
- mf_hash_add_item(&ht, item);
-
- assert(mf_hash_find(&ht, key) == item);
-
- if (ht.mht_mask + 1 != num_buckets)
- {
- /* hash table was expanded */
- assert(ht.mht_mask + 1 == num_buckets * MHT_GROWTH_FACTOR);
- assert(i + 1 == (num_buckets << MHT_LOG_LOAD_FACTOR));
- }
- }
-
- /* check presence of inserted items */
- for (i = 0; i < TEST_COUNT; i++)
- {
- key = index_to_key(i);
- item = mf_hash_find(&ht, key);
- assert(item != NULL);
- assert(item->mhi_key == key);
- }
-
- /* delete some items */
- for (i = 0; i < TEST_COUNT; i++)
- {
- if (i % 100 < 70)
- {
- key = index_to_key(i);
- item = mf_hash_find(&ht, key);
- assert(item != NULL);
- assert(item->mhi_key == key);
-
- mf_hash_rem_item(&ht, item);
- assert(mf_hash_find(&ht, key) == NULL);
-
- mf_hash_add_item(&ht, item);
- assert(mf_hash_find(&ht, key) == item);
-
- mf_hash_rem_item(&ht, item);
- assert(mf_hash_find(&ht, key) == NULL);
-
- vim_free(item);
- }
- }
-
- /* check again */
- for (i = 0; i < TEST_COUNT; i++)
- {
- key = index_to_key(i);
- item = mf_hash_find(&ht, key);
-
- if (i % 100 < 70)
- {
- assert(item == NULL);
- }
- else
- {
- assert(item != NULL);
- assert(item->mhi_key == key);
- }
- }
-
- /* free hash table and all remaining items */
- mf_hash_free_all(&ht);
-}
-
- int
-main(void)
-{
- test_mf_hash();
- return 0;
-}