void test_text_error(gconstpointer data) { grn_obj_reinit(&context, &dest, gcut_data_get_uint(data, "type"), 0); grn_obj_reinit(&context, &src, GRN_DB_TEXT, 0); GRN_TEXT_PUTS(&context, &src, gcut_data_get_string(data, "text")); grn_test_assert_equal_rc(gcut_data_get_uint(data, "expected"), grn_obj_cast(&context, &src, &dest, GRN_FALSE)); }
void test_text_to_uint16(void) { grn_obj_reinit(&context, &dest, GRN_DB_UINT16, 0); cast_text("2929"); cut_assert_equal_uint(2929, GRN_UINT16_VALUE(&dest)); }
void test_text_to_float(void) { grn_obj_reinit(&context, &dest, GRN_DB_FLOAT, 0); cast_text("29.029"); cut_assert_equal_double(29.029, 0.001, GRN_FLOAT_VALUE(&dest)); }
static void cast_uint64(guint64 number) { grn_obj_reinit(&context, &src, GRN_DB_UINT64, 0); GRN_UINT64_SET(&context, &src, number); grn_test_assert(grn_obj_cast(&context, &src, &dest, GRN_FALSE)); }
VALUE rb_grn_vector_to_ruby_object (grn_ctx *context, grn_obj *vector) { VALUE array; grn_obj value; unsigned int i, n; if (!vector) return Qnil; GRN_VOID_INIT(&value); n = grn_vector_size(context, vector); array = rb_ary_new2(n); for (i = 0; i < n; i++) { const char *_value; unsigned int weight, length; grn_id domain; length = grn_vector_get_element(context, vector, i, &_value, &weight, &domain); grn_obj_reinit(context, &value, domain, 0); grn_bulk_write(context, &value, _value, length); rb_ary_push(array, GRNOBJ2RVAL(Qnil, context, &value, Qnil)); } GRN_OBJ_FIN(context, &value); return array; }
void test_uint64_to_int16(void) { grn_obj_reinit(&context, &dest, GRN_DB_INT16, 0); cast_uint64(2929); cut_assert_equal_int(2929, GRN_UINT16_VALUE(&dest)); }
void test_bool_to_bool(void) { grn_obj_reinit(&context, &dest, GRN_DB_BOOL, 0); cast_bool(TRUE); cut_assert_true(GRN_BOOL_VALUE(&dest)); }
void test_uint64_to_text(void) { grn_obj_reinit(&context, &dest, GRN_DB_TEXT, 0); cast_uint64(2929); cut_assert_equal_string("2929", GRN_TEXT_VALUE(&dest)); }
void test_uint64_to_float(void) { grn_obj_reinit(&context, &dest, GRN_DB_FLOAT, 0); cast_uint64(29); cut_assert_equal_double(29, 0.1, GRN_FLOAT_VALUE(&dest)); }
grn_obj * rb_grn_value_from_ruby_object (VALUE object, grn_ctx *context, grn_obj *value, grn_id type_id, grn_obj *type) { grn_bool string_p, table_type_p; string_p = rb_type(object) == T_STRING; table_type_p = (GRN_TABLE_HASH_KEY <= type->header.type && type->header.type <= GRN_TABLE_NO_KEY); if (!string_p) { return RVAL2GRNBULK_WITH_TYPE(object, context, value, type_id, type); } if (table_type_p && RSTRING_LEN(object) == 0) { if (value) { if (value->header.domain != type_id) { grn_obj_reinit(context, value, type_id, 0); } } else { value = grn_obj_open(context, GRN_BULK, 0, type_id); rb_grn_context_check(context, object); } GRN_RECORD_SET(context, value, GRN_ID_NIL); return value; } return RVAL2GRNBULK(object, context, value); }
void test_int64_to_int8(void) { grn_obj_reinit(&context, &dest, GRN_DB_INT8, 0); cast_int64(-29); cut_assert_equal_int(-29, GRN_INT8_VALUE(&dest)); }
void test_int32_to_int32(void) { grn_obj_reinit(&context, &dest, GRN_DB_INT32, 0); cast_int32(-29292929); cut_assert_equal_int(-29292929, GRN_INT32_VALUE(&dest)); }
void test_int32_to_uint8(void) { grn_obj_reinit(&context, &dest, GRN_DB_UINT8, 0); cast_int32(29); cut_assert_equal_uint(29, GRN_UINT8_VALUE(&dest)); }
static grn_bool exec_match_vector_bulk(grn_ctx *ctx, grn_obj *vector, grn_obj *query) { grn_bool matched = GRN_FALSE; unsigned int i, size; grn_obj element; size = grn_vector_size(ctx, vector); GRN_VOID_INIT(&element); for (i = 0; i < size; i++) { const char *content; unsigned int content_size; grn_id domain_id; content_size = grn_vector_get_element(ctx, vector, i, &content, NULL, &domain_id); grn_obj_reinit(ctx, &element, domain_id, 0); grn_bulk_write(ctx, &element, content, content_size); if (grn_operator_exec_equal(ctx, &element, query)) { matched = GRN_TRUE; break; } } GRN_OBJ_FIN(ctx, &element); return matched; }
void test_uint64_to_uint32(void) { grn_obj_reinit(&context, &dest, GRN_DB_UINT32, 0); cast_uint64(29292929); cut_assert_equal_uint(29292929, GRN_UINT32_VALUE(&dest)); }
void test_uint64_to_uint64(void) { grn_obj_reinit(&context, &dest, GRN_DB_UINT64, 0); cast_uint64(G_GUINT64_CONSTANT(2929292929)); gcut_assert_equal_uint64(G_GUINT64_CONSTANT(2929292929), GRN_UINT64_VALUE(&dest)); }
void test_text_to_geo_point_mixed_invalid(void) { grn_obj_reinit(&context, &dest, GRN_DB_WGS84_GEO_POINT, 0); set_text("35.6954581363924x503802073garbage"); grn_test_assert_equal_rc(GRN_INVALID_ARGUMENT, grn_obj_cast(&context, &src, &dest, FALSE)); }
void test_text_to_geo_point_in_degree_invalid(void) { grn_obj_reinit(&context, &dest, GRN_DB_WGS84_GEO_POINT, 0); set_text("35.6954581363924?139.564207350021"); grn_test_assert_equal_rc(GRN_INVALID_ARGUMENT, grn_obj_cast(&context, &src, &dest, FALSE)); }
void test_uint64_to_bool(gconstpointer data) { grn_obj_reinit(&context, &dest, GRN_DB_BOOL, 0); cast_uint64(gcut_data_get_uint(data, "number")); cut_assert_equal_boolean(gcut_data_get_uint(data, "expected"), GRN_BOOL_VALUE(&dest)); }
void ConditionConverter::append_const_item(const Item_field *field_item, Item *const_item, grn_obj *expression) { MRN_DBUG_ENTER_METHOD(); enum_field_types field_type = field_item->field_type(); NormalizedType normalized_type = normalize_field_type(field_type); switch (normalized_type) { case STRING_TYPE: grn_obj_reinit(ctx_, &value_, GRN_DB_TEXT, 0); { String *string; string = const_item->val_str(NULL); GRN_TEXT_SET(ctx_, &value_, string->ptr(), string->length()); } break; case INT_TYPE: grn_obj_reinit(ctx_, &value_, GRN_DB_INT64, 0); GRN_INT64_SET(ctx_, &value_, const_item->val_int()); break; case TIME_TYPE: grn_obj_reinit(ctx_, &value_, GRN_DB_TIME, 0); { MYSQL_TIME mysql_time; get_time_value(field_item, const_item, &mysql_time); bool truncated = false; TimeConverter time_converter; long long int time = time_converter.mysql_time_to_grn_time(&mysql_time, &truncated); GRN_TIME_SET(ctx_, &value_, time); } break; case UNSUPPORTED_TYPE: // Should not be occurred. DBUG_PRINT("error", ("mroonga: append_const_item: unsupported type: <%d> " "This case should not be occurred.", field_type)); grn_obj_reinit(ctx_, &value_, GRN_DB_VOID, 0); break; } grn_expr_append_const(ctx_, expression, &value_, GRN_OP_PUSH, 1); DBUG_VOID_RETURN; }
void test_int32_to_geo_point_invalid(void) { grn_obj_reinit(&context, &dest, GRN_DB_WGS84_GEO_POINT, 0); set_int32(1); grn_test_assert_equal_rc(GRN_INVALID_ARGUMENT, grn_obj_cast(&context, &src, &dest, GRN_FALSE)); }
void test_int32_to_int64(void) { grn_obj_reinit(&context, &dest, GRN_DB_INT64, 0); cast_int32(-29292929); gcut_assert_equal_int64(G_GINT64_CONSTANT(-29292929), GRN_INT64_VALUE(&dest)); }
static void set_text(const gchar *text) { grn_obj_reinit(&context, &src, GRN_DB_TEXT, 0); if (text) { GRN_TEXT_PUTS(&context, &src, text); } }
void test_text_to_geo_point_invalid(void) { grn_obj_reinit(&context, &dest, GRN_DB_WGS84_GEO_POINT, 0); set_text("130194581?503802073"); grn_test_assert_equal_rc(GRN_INVALID_ARGUMENT, grn_obj_cast(&context, &src, &dest, FALSE)); }
grn_bool grn_mrb_bulk_cast(mrb_state *mrb, grn_obj *from, grn_obj *to, grn_id domain_id) { grn_ctx *ctx = (grn_ctx *)mrb->ud; grn_rc rc; grn_obj_reinit(ctx, to, domain_id, 0); rc = grn_obj_cast(ctx, from, to, GRN_FALSE); return rc == GRN_SUCCESS; }
static void cast_text(grn_rc expected_rc, const gchar *text) { grn_obj_reinit(&context, &src, GRN_DB_TEXT, 0); if (text) { GRN_TEXT_PUTS(&context, &src, text); } grn_test_assert_equal_rc(expected_rc, grn_obj_cast(&context, &src, &dest, GRN_FALSE)); }
void test_text_to_geo_point_mixed_comma(void) { gint takane_latitude, takane_longitude; grn_obj_reinit(&context, &dest, GRN_DB_WGS84_GEO_POINT, 0); cast_text("35.6954581363924,503802073"); GRN_GEO_POINT_VALUE(&dest, takane_latitude, takane_longitude); cut_assert_equal_int(128503649, takane_latitude); cut_assert_equal_int(503802073, takane_longitude); }
void test_uint64_to_time(void) { long long int sec, usec; grn_obj_reinit(&context, &dest, GRN_DB_TIME, 0); cast_uint64(1259009530); GRN_TIME_UNPACK(GRN_TIME_VALUE(&dest), sec, usec); cut_assert_equal_int(1259009530, sec); cut_assert_equal_int(0, usec); }
void test_tokyo_geo_point_to_tokyo_geo_point(void) { gint takane_latitude, takane_longitude; gint takane_latitude_in_tokyo_geodetic_system = 130183139; gint takane_longitude_in_tokyo_geodetic_system = 503813760; grn_obj_reinit(&context, &src, GRN_DB_TOKYO_GEO_POINT, 0); GRN_GEO_POINT_SET(&context, &src, takane_latitude_in_tokyo_geodetic_system, takane_longitude_in_tokyo_geodetic_system); grn_obj_reinit(&context, &dest, GRN_DB_TOKYO_GEO_POINT, 0); grn_test_assert(grn_obj_cast(&context, &src, &dest, GRN_FALSE)); GRN_GEO_POINT_VALUE(&dest, takane_latitude, takane_longitude); cut_assert_equal_int(takane_latitude_in_tokyo_geodetic_system, takane_latitude); cut_assert_equal_int(takane_longitude_in_tokyo_geodetic_system, takane_longitude); }
void test_wgs84_geo_point_to_wgs84_geo_point(void) { gint takane_latitude, takane_longitude; gint takane_latitude_in_wgs84 = 130194581; gint takane_longitude_in_wgs84 = 503802073; grn_obj_reinit(&context, &src, GRN_DB_WGS84_GEO_POINT, 0); GRN_GEO_POINT_SET(&context, &src, takane_latitude_in_wgs84, takane_longitude_in_wgs84); grn_obj_reinit(&context, &dest, GRN_DB_WGS84_GEO_POINT, 0); grn_test_assert(grn_obj_cast(&context, &src, &dest, GRN_FALSE)); GRN_GEO_POINT_VALUE(&dest, takane_latitude, takane_longitude); cut_assert_equal_int(takane_latitude_in_wgs84, takane_latitude); cut_assert_equal_int(takane_longitude_in_wgs84, takane_longitude); }