mirror of
https://github.com/urbit/shrub.git
synced 2024-12-23 02:41:35 +03:00
Merge pull request #1061 from urbit/cleanup-and-test
configures/builds/runs unit tests
This commit is contained in:
commit
83a062ab57
1
.d/.gitignore
vendored
1
.d/.gitignore
vendored
@ -1 +0,0 @@
|
|||||||
**.d
|
|
0
.d/jets/a/.gitignore
vendored
0
.d/jets/a/.gitignore
vendored
0
.d/jets/b/.gitignore
vendored
0
.d/jets/b/.gitignore
vendored
0
.d/jets/c/.gitignore
vendored
0
.d/jets/c/.gitignore
vendored
0
.d/jets/d/.gitignore
vendored
0
.d/jets/d/.gitignore
vendored
0
.d/jets/e/.gitignore
vendored
0
.d/jets/e/.gitignore
vendored
0
.d/jets/f/.gitignore
vendored
0
.d/jets/f/.gitignore
vendored
0
.d/jets/g/.gitignore
vendored
0
.d/jets/g/.gitignore
vendored
0
.d/noun/.gitignore
vendored
0
.d/noun/.gitignore
vendored
0
.d/outside/jhttp/.gitignore
vendored
0
.d/outside/jhttp/.gitignore
vendored
0
.d/outside/murmur3/.gitignore
vendored
0
.d/outside/murmur3/.gitignore
vendored
0
.d/tests/.gitignore
vendored
0
.d/tests/.gitignore
vendored
0
.d/vere/.gitignore
vendored
0
.d/vere/.gitignore
vendored
@ -24,6 +24,7 @@ script:
|
|||||||
- meson . ./build --buildtype=debugoptimized -Dgc=true -Dprof=true
|
- meson . ./build --buildtype=debugoptimized -Dgc=true -Dprof=true
|
||||||
- cd ./build
|
- cd ./build
|
||||||
- ninja
|
- ninja
|
||||||
|
- ninja test
|
||||||
- sudo ninja install
|
- sudo ninja install
|
||||||
- cd ../.travis
|
- cd ../.travis
|
||||||
- npm install
|
- npm install
|
||||||
|
80
meson.build
80
meson.build
@ -218,7 +218,17 @@ jets_g_src = [
|
|||||||
jets_src = [
|
jets_src = [
|
||||||
'jets/tree.c'
|
'jets/tree.c'
|
||||||
]
|
]
|
||||||
noun_src = ['noun/allocate.c',
|
|
||||||
|
jets_all_src = [
|
||||||
|
jets_a_src, jets_b_src,
|
||||||
|
jets_c_src, jets_d_src,
|
||||||
|
jets_e_src, jets_e_ed_src,
|
||||||
|
jets_f_src, jets_f_ut_src,
|
||||||
|
jets_z_src, jets_z_ut_src,
|
||||||
|
jets_g_src, jets_src]
|
||||||
|
|
||||||
|
noun_src = [
|
||||||
|
'noun/allocate.c',
|
||||||
'noun/events.c',
|
'noun/events.c',
|
||||||
'noun/hashtable.c',
|
'noun/hashtable.c',
|
||||||
'noun/imprison.c',
|
'noun/imprison.c',
|
||||||
@ -229,14 +239,15 @@ noun_src = ['noun/allocate.c',
|
|||||||
'noun/trace.c',
|
'noun/trace.c',
|
||||||
'noun/vortex.c',
|
'noun/vortex.c',
|
||||||
'noun/xtract.c',
|
'noun/xtract.c',
|
||||||
'noun/zave.c']
|
'noun/zave.c'
|
||||||
|
]
|
||||||
|
|
||||||
vere_src = ['vere/ames.c',
|
vere_sans_main = [
|
||||||
|
'vere/ames.c',
|
||||||
'vere/behn.c',
|
'vere/behn.c',
|
||||||
'vere/cttp.c',
|
'vere/cttp.c',
|
||||||
'vere/http.c',
|
'vere/http.c',
|
||||||
'vere/loop.c',
|
'vere/loop.c',
|
||||||
'vere/main.c',
|
|
||||||
'vere/raft.c',
|
'vere/raft.c',
|
||||||
'vere/reck.c',
|
'vere/reck.c',
|
||||||
'vere/save.c',
|
'vere/save.c',
|
||||||
@ -244,16 +255,12 @@ vere_src = ['vere/ames.c',
|
|||||||
'vere/term.c',
|
'vere/term.c',
|
||||||
'vere/time.c',
|
'vere/time.c',
|
||||||
'vere/unix.c',
|
'vere/unix.c',
|
||||||
'vere/walk.c']
|
'vere/walk.c'
|
||||||
|
]
|
||||||
|
|
||||||
src_list = [
|
vere_src = vere_sans_main + [ 'vere/main.c' ]
|
||||||
vere_src, noun_src,
|
|
||||||
jets_a_src, jets_b_src,
|
src_list = [vere_src, noun_src, jets_all_src]
|
||||||
jets_c_src, jets_d_src,
|
|
||||||
jets_e_src, jets_e_ed_src,
|
|
||||||
jets_f_src, jets_f_ut_src,
|
|
||||||
jets_z_src, jets_z_ut_src,
|
|
||||||
jets_g_src, jets_src]
|
|
||||||
|
|
||||||
sources = []
|
sources = []
|
||||||
foreach s : src_list
|
foreach s : src_list
|
||||||
@ -369,3 +376,50 @@ dependencies: [openssl_dep,
|
|||||||
softfloat3_dep,
|
softfloat3_dep,
|
||||||
libsni_dep] + os_deps,
|
libsni_dep] + os_deps,
|
||||||
install: true)
|
install: true)
|
||||||
|
|
||||||
|
# XX shrink this list
|
||||||
|
test_sources = noun_src + jets_all_src + vere_sans_main
|
||||||
|
|
||||||
|
test_hashtable = executable('test-hashtable',
|
||||||
|
sources : test_sources + ['tests/hashtable_tests.c'],
|
||||||
|
include_directories : incdir,
|
||||||
|
c_args : os_c_flags,
|
||||||
|
link_args: os_link_flags,
|
||||||
|
dependencies: [openssl_dep,
|
||||||
|
curl_dep,
|
||||||
|
libuv_dep,
|
||||||
|
libh2o_dep,
|
||||||
|
cmark_dep,
|
||||||
|
gmp_dep,
|
||||||
|
sigsegv_dep,
|
||||||
|
urbitscrypt_dep,
|
||||||
|
ed25519_dep,
|
||||||
|
murmur3_dep,
|
||||||
|
softfloat3_dep,
|
||||||
|
libsni_dep] + os_deps,
|
||||||
|
install: false)
|
||||||
|
|
||||||
|
test('test-hashtable', test_hashtable)
|
||||||
|
|
||||||
|
test_mem_sources = noun_src + jets_all_src + vere_sans_main + ['tests/test.c']
|
||||||
|
|
||||||
|
test_mem = executable('test-mem',
|
||||||
|
sources : test_sources + ['tests/test.c'],
|
||||||
|
include_directories : incdir,
|
||||||
|
c_args : os_c_flags,
|
||||||
|
link_args: os_link_flags,
|
||||||
|
dependencies: [openssl_dep,
|
||||||
|
curl_dep,
|
||||||
|
libuv_dep,
|
||||||
|
libh2o_dep,
|
||||||
|
cmark_dep,
|
||||||
|
gmp_dep,
|
||||||
|
sigsegv_dep,
|
||||||
|
urbitscrypt_dep,
|
||||||
|
ed25519_dep,
|
||||||
|
murmur3_dep,
|
||||||
|
softfloat3_dep,
|
||||||
|
libsni_dep] + os_deps,
|
||||||
|
install: false)
|
||||||
|
|
||||||
|
test('test-mem', test_mem, should_fail: true)
|
||||||
|
67
tests/kjet.c
67
tests/kjet.c
@ -1,67 +0,0 @@
|
|||||||
/* f/meme.c
|
|
||||||
**
|
|
||||||
*/
|
|
||||||
#include "f/meme.h"
|
|
||||||
|
|
||||||
/* u3_cka_sub(): a + b.
|
|
||||||
*/
|
|
||||||
/* u3_cka_gth(): a + b.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* u3_cka_mul(): a * b.
|
|
||||||
*/
|
|
||||||
/* u3_cka_lte(): a * b.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* u3_ckb_lent(): length of list `a`.
|
|
||||||
*/
|
|
||||||
/* u3_ckb_flop(): reverse list `a`.
|
|
||||||
*/
|
|
||||||
/* u3_ckb_weld(): concatenate lists `a` before `b`.
|
|
||||||
*/
|
|
||||||
/* u3_ckc_lsh(): left shift.
|
|
||||||
*/
|
|
||||||
/* u3_ckc_rsh(): right shift.
|
|
||||||
*/
|
|
||||||
/* u3_ckdb_get(): map get for key `b` in map `a` with u3_none.
|
|
||||||
*/
|
|
||||||
u3_weak
|
|
||||||
u3_ckdb_get(u3_noun a, u3_noun b)
|
|
||||||
{
|
|
||||||
u3_noun c = u3_cqdb_get(a, b);
|
|
||||||
|
|
||||||
u3z(a); u3z(b);
|
|
||||||
if ( u3_no == u3_cr_du(c) ) {
|
|
||||||
u3z(c);
|
|
||||||
return u3_none;
|
|
||||||
} else {
|
|
||||||
u3_noun pro = u3k(u3t(c));
|
|
||||||
|
|
||||||
u3z(c);
|
|
||||||
return pro;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* u3_ckdb_got(): map get for key `b` in map `a` with fail.
|
|
||||||
*/
|
|
||||||
/* u3_ckdb_put(): map put for key `b`, value `c` in map `a`.
|
|
||||||
*/
|
|
||||||
/* u3_ckdb_gas(): list to map.
|
|
||||||
*/
|
|
||||||
/* u3_ckdi_gas(): list to map.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* u3_ckdb_has(): test for presence.
|
|
||||||
*/
|
|
||||||
/* u3_ckdi_has(): test for presence.
|
|
||||||
*/
|
|
||||||
/* u3_ckdi_tap(): map/set convert to list. (solves by_tap also.)
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* u3_cke_cue(): expand saved pill.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* u3_cke_jam(): pack noun as atom.
|
|
||||||
*/
|
|
||||||
/* u3_cke_trip(): atom to tape.
|
|
||||||
*/
|
|
99
tests/test.c
99
tests/test.c
@ -34,7 +34,7 @@ u3_walk_load(c3_c* pas_c)
|
|||||||
|
|
||||||
if ( (fid_i < 0) || (fstat(fid_i, &buf_b) < 0) ) {
|
if ( (fid_i < 0) || (fstat(fid_i, &buf_b) < 0) ) {
|
||||||
fprintf(stderr, "%s: %s\r\n", pas_c, strerror(errno));
|
fprintf(stderr, "%s: %s\r\n", pas_c, strerror(errno));
|
||||||
return u3_cm_bail(c3__fail);
|
return u3m_bail(c3__fail);
|
||||||
}
|
}
|
||||||
fln_w = buf_b.st_size;
|
fln_w = buf_b.st_size;
|
||||||
pad_y = c3_malloc(buf_b.st_size);
|
pad_y = c3_malloc(buf_b.st_size);
|
||||||
@ -44,10 +44,10 @@ u3_walk_load(c3_c* pas_c)
|
|||||||
|
|
||||||
if ( fln_w != red_w ) {
|
if ( fln_w != red_w ) {
|
||||||
free(pad_y);
|
free(pad_y);
|
||||||
return u3_cm_bail(c3__fail);
|
return u3m_bail(c3__fail);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
u3_noun pad = u3_ci_bytes(fln_w, (c3_y *)pad_y);
|
u3_noun pad = u3i_bytes(fln_w, (c3_y *)pad_y);
|
||||||
free(pad_y);
|
free(pad_y);
|
||||||
|
|
||||||
return pad;
|
return pad;
|
||||||
@ -59,14 +59,14 @@ u3_walk_load(c3_c* pas_c)
|
|||||||
static c3_w*
|
static c3_w*
|
||||||
_test_walloc(c3_w siz_w)
|
_test_walloc(c3_w siz_w)
|
||||||
{
|
{
|
||||||
c3_w *ptr_w = u3_ca_walloc(siz_w);
|
c3_w *ptr_w = u3a_walloc(siz_w);
|
||||||
c3_w i_w;
|
c3_w i_w;
|
||||||
|
|
||||||
c3_assert(siz_w >= 1);
|
c3_assert(siz_w >= 1);
|
||||||
*ptr_w = siz_w;
|
*ptr_w = siz_w;
|
||||||
|
|
||||||
for ( i_w = 1; i_w < siz_w; i_w++ ) {
|
for ( i_w = 1; i_w < siz_w; i_w++ ) {
|
||||||
ptr_w[i_w] = u3_cr_mug((0xffff & (c3_p)(ptr_w)) + i_w);
|
ptr_w[i_w] = u3r_mug((0xffff & (c3_p)(ptr_w)) + i_w);
|
||||||
}
|
}
|
||||||
return ptr_w;
|
return ptr_w;
|
||||||
}
|
}
|
||||||
@ -77,9 +77,9 @@ _test_free(c3_w* ptr_w)
|
|||||||
c3_w i_w, siz_w = *ptr_w;
|
c3_w i_w, siz_w = *ptr_w;
|
||||||
|
|
||||||
for ( i_w = 1; i_w < siz_w; i_w++ ) {
|
for ( i_w = 1; i_w < siz_w; i_w++ ) {
|
||||||
c3_assert(ptr_w[i_w] == u3_cr_mug((0xffff & (c3_p)(ptr_w)) + i_w));
|
c3_assert(ptr_w[i_w] == u3r_mug((0xffff & (c3_p)(ptr_w)) + i_w));
|
||||||
}
|
}
|
||||||
u3_ca_free(ptr_w);
|
u3a_free(ptr_w);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define NUM 16384
|
#define NUM 16384
|
||||||
@ -94,7 +94,7 @@ test(void)
|
|||||||
c3_w i_w;
|
c3_w i_w;
|
||||||
|
|
||||||
for ( i_w = 0; i_w < NUM; i_w++ ) {
|
for ( i_w = 0; i_w < NUM; i_w++ ) {
|
||||||
c3_w siz_w = c3_max(1, u3_cr_mug(i_w) & 0xff);
|
c3_w siz_w = c3_max(1, u3r_mug(i_w) & 0xff);
|
||||||
|
|
||||||
one_w[i_w] = _test_walloc(siz_w);
|
one_w[i_w] = _test_walloc(siz_w);
|
||||||
two_w[i_w] = _test_walloc(siz_w);
|
two_w[i_w] = _test_walloc(siz_w);
|
||||||
@ -106,7 +106,7 @@ test(void)
|
|||||||
_road_sane();
|
_road_sane();
|
||||||
}
|
}
|
||||||
for ( i_w = 0; i_w < NUM; i_w++ ) {
|
for ( i_w = 0; i_w < NUM; i_w++ ) {
|
||||||
c3_w siz_w = c3_max(1, u3_cr_mug(i_w + 1) & 0xff);
|
c3_w siz_w = c3_max(1, u3r_mug(i_w + 1) & 0xff);
|
||||||
|
|
||||||
two_w[i_w] = _test_walloc(siz_w);
|
two_w[i_w] = _test_walloc(siz_w);
|
||||||
_road_sane();
|
_road_sane();
|
||||||
@ -117,7 +117,7 @@ test(void)
|
|||||||
_road_sane();
|
_road_sane();
|
||||||
}
|
}
|
||||||
for ( i_w = 0; i_w < NUM; i_w++ ) {
|
for ( i_w = 0; i_w < NUM; i_w++ ) {
|
||||||
c3_w siz_w = c3_max(1, u3_cr_mug(i_w + 2) & 0xff);
|
c3_w siz_w = c3_max(1, u3r_mug(i_w + 2) & 0xff);
|
||||||
|
|
||||||
one_w[i_w] = _test_walloc(siz_w);
|
one_w[i_w] = _test_walloc(siz_w);
|
||||||
_road_sane();
|
_road_sane();
|
||||||
@ -140,21 +140,21 @@ test(void)
|
|||||||
static void
|
static void
|
||||||
_test_hash(void)
|
_test_hash(void)
|
||||||
{
|
{
|
||||||
u3_cm_dump();
|
// u3m_dump();
|
||||||
{
|
{
|
||||||
u3_ch_root* har_u = u3_ch_new();
|
u3h_root* har_u = u3h_new();
|
||||||
c3_w i_w;
|
c3_w i_w;
|
||||||
c3_w max_w = (1 << 20);
|
c3_w max_w = (1 << 20);
|
||||||
|
|
||||||
for ( i_w = 0; i_w < max_w; i_w++ ) {
|
for ( i_w = 0; i_w < max_w; i_w++ ) {
|
||||||
u3_noun key = u3nc(0, i_w);
|
u3_noun key = u3nc(0, i_w);
|
||||||
|
|
||||||
u3_ch_put(har_u, key, (i_w + 1));
|
u3h_put(har_u, key, (i_w + 1));
|
||||||
u3z(key);
|
u3z(key);
|
||||||
}
|
}
|
||||||
for ( i_w = 0; i_w < max_w; i_w++ ) {
|
for ( i_w = 0; i_w < max_w; i_w++ ) {
|
||||||
u3_noun key = u3nc(0, i_w);
|
u3_noun key = u3nc(0, i_w);
|
||||||
u3_noun val = u3_ch_get(har_u, key);
|
u3_noun val = u3h_get(har_u, key);
|
||||||
|
|
||||||
if ( val != (i_w + 1) ) {
|
if ( val != (i_w + 1) ) {
|
||||||
if ( u3_none == val ) {
|
if ( u3_none == val ) {
|
||||||
@ -165,9 +165,9 @@ _test_hash(void)
|
|||||||
}
|
}
|
||||||
u3z(key);
|
u3z(key);
|
||||||
}
|
}
|
||||||
u3_ch_free(har_u);
|
u3h_free(har_u);
|
||||||
}
|
}
|
||||||
u3_cm_dump();
|
// u3m_dump();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -175,25 +175,25 @@ _test_hash(void)
|
|||||||
static void
|
static void
|
||||||
_test_jam(void)
|
_test_jam(void)
|
||||||
{
|
{
|
||||||
u3_cm_dump();
|
// u3m_dump();
|
||||||
{
|
{
|
||||||
u3_noun pil = u3_walk_load("urb/urbit.pill");
|
u3_noun pil = u3_walk_load("urb/urbit.pill");
|
||||||
u3_noun cue, jam;
|
u3_noun cue, jam;
|
||||||
|
|
||||||
printf("cueing pill - %d bytes\n", u3_cr_met(3, pil));
|
printf("cueing pill - %d bytes\n", u3r_met(3, pil));
|
||||||
cue = u3_cke_cue(pil);
|
cue = u3ke_cue(pil);
|
||||||
printf("cued - mug %x\n", u3_cr_mug(cue));
|
printf("cued - mug %x\n", u3r_mug(cue));
|
||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
jam = u3_cke_jam(cue);
|
jam = u3ke_jam(cue);
|
||||||
printf("jammed - %d bytes\n", u3_cr_met(3, jam));
|
printf("jammed - %d bytes\n", u3r_met(3, jam));
|
||||||
cue = u3_cke_cue(jam);
|
cue = u3ke_cue(jam);
|
||||||
printf("cued - mug %x\n", u3_cr_mug(cue));
|
printf("cued - mug %x\n", u3r_mug(cue));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
u3z(cue);
|
u3z(cue);
|
||||||
}
|
}
|
||||||
u3_cm_dump();
|
// u3m_dump();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -201,45 +201,45 @@ static void
|
|||||||
_test_leap(void)
|
_test_leap(void)
|
||||||
{
|
{
|
||||||
#if 1
|
#if 1
|
||||||
u3_cm_dump();
|
// u3m_dump();
|
||||||
{
|
{
|
||||||
u3_noun pil;
|
u3_noun pil;
|
||||||
u3_noun cue, jam;
|
u3_noun cue, jam;
|
||||||
c3_w gof_w = u3_cm_golf();
|
c3_w gof_w = u3m_golf();
|
||||||
|
|
||||||
pil = u3_walk_load("urb/urbit.pill");
|
pil = u3_walk_load("urb/urbit.pill");
|
||||||
u3_cm_leap(0);
|
u3m_leap(0);
|
||||||
printf("cueing pill - %d bytes\n", u3_cr_met(3, pil));
|
printf("cueing pill - %d bytes\n", u3r_met(3, pil));
|
||||||
cue = u3_cke_cue(pil);
|
cue = u3ke_cue(pil);
|
||||||
printf("cued - %p, mug %x\n", u3_co_to_ptr(cue), u3_cr_mug(cue));
|
printf("cued - %p, mug %x\n", u3a_to_ptr(cue), u3r_mug(cue));
|
||||||
u3_cm_fall();
|
u3m_fall();
|
||||||
|
|
||||||
cue = u3_ca_take(cue);
|
cue = u3a_take(cue);
|
||||||
printf("taken - %p, mug %x\n", u3_co_to_ptr(cue), u3_cr_mug(cue));
|
printf("taken - %p, mug %x\n", u3a_to_ptr(cue), u3r_mug(cue));
|
||||||
u3_cm_flog(gof_w);
|
u3m_flog(gof_w);
|
||||||
u3z(pil);
|
u3z(pil);
|
||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
jam = u3_cke_jam(cue);
|
jam = u3ke_jam(cue);
|
||||||
printf("jammed - %d bytes\n", u3_cr_met(3, jam));
|
printf("jammed - %d bytes\n", u3r_met(3, jam));
|
||||||
cue = u3_cke_cue(jam);
|
cue = u3ke_cue(jam);
|
||||||
printf("cued - mug %x\n", u3_cr_mug(cue));
|
printf("cued - mug %x\n", u3r_mug(cue));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
u3z(cue);
|
u3z(cue);
|
||||||
}
|
}
|
||||||
u3_cm_dump();
|
// u3m_dump();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_test_test(void)
|
_test_test(void)
|
||||||
{
|
{
|
||||||
u3_noun fol = u3_cke_cue(u3_walk_load("pill/west.pill"));
|
u3_noun fol = u3ke_cue(u3_walk_load("pill/west.pill"));
|
||||||
u3_noun val;
|
u3_noun val;
|
||||||
|
|
||||||
printf("test_test: formula mug %x\n", u3_cr_mug(fol));
|
printf("test_test: formula mug %x\n", u3r_mug(fol));
|
||||||
val = u3_cn_nock_on(u3nc(42, 17), fol);
|
val = u3n_nock_on(u3nc(42, 17), fol);
|
||||||
printf("val %d\n", val);
|
printf("val %d\n", val);
|
||||||
u3z(val);
|
u3z(val);
|
||||||
}
|
}
|
||||||
@ -254,11 +254,11 @@ main(int argc, char *argv[])
|
|||||||
printf("hello, world: len %dMB\n", (1 << U3_OS_LoomBits) >> 18);
|
printf("hello, world: len %dMB\n", (1 << U3_OS_LoomBits) >> 18);
|
||||||
// _test_words();
|
// _test_words();
|
||||||
|
|
||||||
u3_ce_init(u3_no);
|
u3m_init(c3n);
|
||||||
u3_cm_boot(u3_yes);
|
u3m_pave(c3y, c3n);
|
||||||
// u3_cj_boot();
|
// u3j_boot();
|
||||||
|
|
||||||
// u3_cm_dump();
|
// u3m_dump();
|
||||||
|
|
||||||
printf("booted.\n");
|
printf("booted.\n");
|
||||||
|
|
||||||
@ -267,6 +267,7 @@ main(int argc, char *argv[])
|
|||||||
// _test_hash();
|
// _test_hash();
|
||||||
// _test_jam();
|
// _test_jam();
|
||||||
}
|
}
|
||||||
u3_cm_clear();
|
// u3m_clear();
|
||||||
// u3_cm_dump();
|
|
||||||
|
// u3m_dump();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user