/* <obj1> <obj2> ne <bool> */ int zne(i_ctx_t *i_ctx_p) { /* We'll just be lazy and use eq. */ int code = zeq(i_ctx_p); if (!code) osp->value.boolval ^= 1; return code; }
/** This test requires manual intervention to provide an appropriate file to read and write. */ void test_stream() { FILE* fp = fopen("/tmp/opsec.p12", "r"); FILE* fpo; zstr z1 = z_slurp_stream(fp); zstr z2; fpo = fopen("/tmp/opsec.p12.out", "w"); cz_to_stream(cz(z1), fpo); fflush(fpo); fclose(fpo); z2 = z_slurp_stream(fopen("/tmp/opsec.p12.out", "r")); assert (zeq(cz(z1), cz(z2))); }
int test_repr() { zstr z2; czstr z = cs_as_cz("k"); zstr rz = repr(z); #ifndef NDEBUG const czstr a = cs_as_cz("\\\\k"); #endif assert (!strcmp((const char*)rz.buf, "k")); z = cs_as_cz("\\k"); assert (z.len == 2); free_z(rz); rz = repr(z); assert (rz.len == 3); assert (a.len == 3); assert (!strcmp((const char*)rz.buf, "\\\\k")); assert (zeq(cz(rz), a)); z2 = new_z(4); z2.buf[0] = 1; z2.buf[1] = 10; z2.buf[2] = 100; z2.buf[3] = 252; free_z(rz); rz = repr(cz(z2)); assert (!strcmp((const char*)rz.buf, "\\x01\\x0ad\\xfc")); free_z(z2); z2 = new_z(1); z2.buf[0] = '\0'; free_z(rz); rz = repr(cz(z2)); assert (!strcmp((const char*)rz.buf, "\\x00")); free_z(z2); free_z(rz); return 0; }