mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 20:11:17 +00:00
add the std::sort::binarysearch module
Signed-off-by: Pierre Curto <pierre.curto@gmail.com>
This commit is contained in:
committed by
Christoffer Lerno
parent
bbbcd9bf48
commit
55d17ec990
37
test/unit/stdlib/sort/binarysearch.c3
Normal file
37
test/unit/stdlib/sort/binarysearch.c3
Normal file
@@ -0,0 +1,37 @@
|
||||
module binarysearch_test @test;
|
||||
import std::sort::binarysearch;
|
||||
|
||||
struct SearchTest
|
||||
{
|
||||
int[] data;
|
||||
int x;
|
||||
int index;
|
||||
}
|
||||
|
||||
fn void search()
|
||||
{
|
||||
SearchTest[] tcases = {
|
||||
{ {}, 0, 0 },
|
||||
{ {1, 2, 3}, 1, 0 },
|
||||
{ {1, 2, 3}, 2, 1 },
|
||||
{ {1, 2, 3}, 3, 2 },
|
||||
{ {1, 2, 3}, 4, 3 },
|
||||
{ {10, 20, 30}, 14, 1 },
|
||||
{ {10, 20, 30}, 26, 2 },
|
||||
};
|
||||
|
||||
foreach (tc : tcases)
|
||||
{
|
||||
usz idx = binarysearch::search(tc.data, tc.x);
|
||||
assert(idx == tc.index, "%s: got %d; want %d", tc.data, idx, tc.index);
|
||||
|
||||
usz cmp_idx = binarysearch::cmp_search(tc.data, tc.x, &cmp_int);
|
||||
assert(cmp_idx == tc.index, "%s: got %d; want %d", tc.data, cmp_idx, tc.index);
|
||||
}
|
||||
}
|
||||
|
||||
module binarysearch_test;
|
||||
|
||||
fn int cmp_int(void* x, void* y) {
|
||||
return *(int*)x - *(int*)y;
|
||||
}
|
||||
Reference in New Issue
Block a user