/// @test Test ironbee library - transformation registration TEST(TestIronBee, test_tfn) { ib_engine_t *ib; ib_status_t rc; ib_tfn_t *tfn = (ib_tfn_t *)-1; ib_flags_t flags; uint8_t data_in[128]; ib_field_t *fin; const ib_field_t *fout; ib_bytestr_t *bs; ibtest_engine_create(&ib); ASSERT_EQ(IB_OK, ib_tfn_register(ib, "foo2bar", foo2bar, IB_TFN_FLAG_NONE, NULL)); ASSERT_EQ(IB_OK, ib_tfn_lookup(ib, "foo2bar", &tfn)); ASSERT_NE((ib_tfn_t *)-1, tfn); ASSERT_TRUE(tfn); ib_bytestr_dup_nulstr(&bs, ib->mp, "foo"); fin = NULL; ib_field_create( &fin, ib->mp, IB_FIELD_NAME("ByteStr"), IB_FTYPE_BYTESTR, ib_ftype_bytestr_in(bs) ); fout = NULL; flags = 0; rc = ib_tfn_transform(ib, ib->mp, tfn, fin, &fout, &flags); ASSERT_EQ(rc, IB_OK); ASSERT_NE((ib_tfn_t *)-1, tfn); ASSERT_TRUE(IB_TFN_CHECK_FMODIFIED(flags)); ASSERT_NE(fin, fout); strcpy((char *)data_in, "foo"); fin = NULL; ib_field_create( &fin, ib->mp, IB_FIELD_NAME("NulStr"), IB_FTYPE_NULSTR, ib_ftype_nulstr_in((char *)data_in) ); fout = NULL; flags = 0; rc = ib_tfn_transform(ib, ib->mp, tfn, fin, &fout, &flags); ASSERT_EQ(rc, IB_OK); ASSERT_NE((ib_tfn_t *)-1, tfn); ASSERT_TRUE(IB_TFN_CHECK_FMODIFIED(flags)); ASSERT_NE(fin, fout); ibtest_engine_destroy(ib); }
ConstTransformation ConstTransformation::lookup( Engine engine, const char *name ) { const ib_tfn_t* tfn; throw_if_error(ib_tfn_lookup( engine.ib(), name, &tfn )); return ConstTransformation(tfn); }