}
+static noinline void check_load(struct maple_tree *mt, unsigned long index,
+ void *ptr)
+{
+ void *ret = mtree_test_load(mt, index);
+
+ MT_BUG_ON(mt, ret != ptr);
+}
+
static noinline void check_insert_range(struct maple_tree *mt,
unsigned long start, unsigned long end, void *ptr)
{
int ret = -EINVAL;
+ unsigned long i;
ret = mtree_test_insert_range(mt, start, end, ptr);
+ for (i = start; i >= end; i++) {
+ check_load(mt, i, ptr);
+ }
MT_BUG_ON(mt, ret != 0);
}
}
-static noinline void check_load(struct maple_tree *mt, unsigned long index,
- void *ptr)
-{
- void *ret = mtree_test_load(mt, index);
-
- MT_BUG_ON(mt, ret != ptr);
-}
-
static noinline
void check_index_load(struct maple_tree *mt, unsigned long index)
{
mtree_unlock(mt);
mtree_destroy(mt);
}
-static noinline void check_seq(struct maple_tree *mt, unsigned long max)
+static noinline void check_seq(struct maple_tree *mt, unsigned long max,
+ bool verbose)
{
unsigned long i, j;
}
check_load(mt, i + 1, NULL);
}
- //mt_dump(mt);
+ if (verbose)
+ mt_dump(mt);
mtree_destroy(mt);
}
pr_info("\nTEST STARTING\n\n");
mtree_init(&tree);
- check_seq(&tree, 1000);
- check_new_node(&tree);
- check_lower_bound_split(&tree);
- check_upper_bound_split(&tree);
- check_mid_split(&tree);
- check_load(&tree, set[0], NULL); // See if 15 -> NULL
+ check_load(&tree, set[0], NULL); // See if 5015 -> NULL
check_insert(&tree, set[9], &tree); // Insert 0
check_load(&tree, set[9], &tree); // See if 0 -> &tree
- check_load(&tree, set[0], NULL); // See if 15 -> NULL
+ check_load(&tree, set[0], NULL); // See if 5015 -> NULL
- check_insert(&tree, set[10], ptr); // Insert 3
+ check_insert(&tree, set[10], ptr); // Insert 5003
check_load(&tree, set[9], &tree); // See if 0 -> &tree
- check_load(&tree, set[11], NULL); // See if 2 -> NULL
- check_load(&tree, set[10], ptr); // See if 3 -> ptr
+ check_load(&tree, set[11], NULL); // See if 5002 -> NULL
+ check_load(&tree, set[10], ptr); // See if 5003 -> ptr
/* Clear out the tree */
mtree_destroy(&tree);
/* Try to insert, insert a dup, and load back what was inserted. */
mtree_init(&tree);
- check_insert(&tree, set[0], &tree); // Insert 15
- check_dup_insert(&tree, set[0], &tree); // Insert 15 again
- check_load(&tree, set[0], &tree); // See if 15 -> &tree
+ check_insert(&tree, set[0], &tree); // Insert 5015
+ check_dup_insert(&tree, set[0], &tree); // Insert 5015 again
+ check_load(&tree, set[0], &tree); // See if 5015 -> &tree
/* Second set of tests try to load a value that doesn't exist, inserts
* a second value, then loads the value again
*/
- check_load(&tree, set[1], NULL); // See if 14 -> NULL
- check_insert(&tree, set[1], ptr); // insert 14 -> ptr
- check_load(&tree, set[1], ptr); // See if 14 -> ptr
- check_load(&tree, set[0], &tree); // See if 15 -> &tree
+ check_load(&tree, set[1], NULL); // See if 5014 -> NULL
+ check_insert(&tree, set[1], ptr); // insert 5014 -> ptr
+ check_load(&tree, set[1], ptr); // See if 5014 -> ptr
+ check_load(&tree, set[0], &tree); // See if 5015 -> &tree
/* Tree currently contains:
* p[0]: 14 -> (nil) p[1]: 15 -> ptr p[2]: 16 -> &tree p[3]: 0 -> (nil)
*/
check_insert(&tree, set[6], ptr); // insert 1002 -> ptr
check_insert(&tree, set[7], &tree); // insert 1003 -> &tree
- check_load(&tree, set[0], &tree); // See if 15 -> &tree
- check_load(&tree, set[1], ptr); // See if 14 -> ptr
+ check_load(&tree, set[0], &tree); // See if 5015 -> &tree
+ check_load(&tree, set[1], ptr); // See if 5014 -> ptr
check_load(&tree, set[6], ptr); // See if 1002 -> ptr
check_load(&tree, set[7], &tree); // 1003 = &tree ?
check_load(&tree, set[5], &tree);
check_load(&tree, set[6], ptr);
check_insert(&tree, set[7], &tree);
+ check_load(&tree, set[0], ptr);
check_insert(&tree, set[8], ptr);
check_insert(&tree, set[9], &tree);
+
check_load(&tree, set[0], ptr);
check_load(&tree, set[1], &tree);
check_load(&tree, set[2], ptr);
mtree_destroy(&tree);
check_nomem(&tree);
- check_seq(&tree, 16);
+ check_seq(&tree, 16, false);
+ check_seq(&tree, 1000, true);
+
+ check_new_node(&tree);
+ check_lower_bound_split(&tree);
+ check_upper_bound_split(&tree);
+ check_mid_split(&tree);
printk("maple_tree: %u of %u tests passed\n", tests_passed, tests_run);
return (tests_run == tests_passed) ? 0 : -EINVAL;