Example #1
0
void
test_default(gconstpointer data)
{
  gdouble yurakucho_latitude = 35.67487;
  gdouble yurakucho_longitude = 139.76352;
  gint distance = 3 * 1000;

  cut_assert_equal_string(
    "[[[7],"
    "[[\"name\",\"ShortText\"],[\"_score\",\"Int32\"],"
    "[\"location\",\"WGS84GeoPoint\"]],"
    "[\"柳屋 たい焼き\",-2147483648,\"128467228x503222332\"],"
    "[\"銀座 かずや\",280743810,\"128424629x503139222\"],"
    "[\"たい焼き鉄次 大丸東京店\",810303031,\"128451283x503166852\"],"
    "[\"たいやき神田達磨 八重洲店\",970517026,\"128453260x503174156\"],"
    "[\"にしみや 甘味処\",1056698886,\"128418570x503188661\"],"
    "[\"築地 さのきや\",1186376492,\"128397312x503174596\"],"
    "[\"しげ田\",1530425643,\"128421454x503208983\"]"
    "]]",
    send_command(
      cut_take_printf(
        "select Shops "
        "--sortby '+_score, +name' "
        "--output_columns 'name, _score, location' "
        "--filter 'geo_in_circle(location, \"%s\", %d)%s' "
        "--scorer "
          "'_score = geo_distance(location, \"%s\") * 1000 * 1000'",
        grn_test_location_string(yurakucho_latitude, yurakucho_longitude),
        distance,
        gcut_data_get_boolean(data, "use-index") ? "" : " > 0",
        grn_test_location_string(yurakucho_latitude, yurakucho_longitude))));
}
Example #2
0
void
test_ellipsoid(gconstpointer data)
{
  gdouble yurakucho_latitude = 35.67487;
  gdouble yurakucho_longitude = 139.76352;
  gint distance = 3 * 1000;
  const gchar *approximate_type;

  approximate_type = gcut_data_get_string(data, "approximate-type");
  cut_assert_equal_string(
    "[[[7],"
    "[[\"name\",\"ShortText\"],[\"_score\",\"Int32\"],"
    "[\"location\",\"WGS84GeoPoint\"]],"
    "[\"柳屋 たい焼き\",-2147483648,\"128467228x503222332\"],"
    "[\"銀座 かずや\",281623827,\"128424629x503139222\"],"
    "[\"たい焼き鉄次 大丸東京店\",811420890,\"128451283x503166852\"],"
    "[\"たいやき神田達磨 八重洲店\",972359708,\"128453260x503174156\"],"
    "[\"にしみや 甘味処\",1060891168,\"128418570x503188661\"],"
    "[\"築地 さのきや\",1187926579,\"128397312x503174596\"],"
    "[\"しげ田\",1537012099,\"128421454x503208983\"]"
    "]]",
    send_command(
      cut_take_printf(
        "select Shops "
        "--sortby '+_score, +name' "
        "--output_columns 'name, _score, location' "
        "--filter 'geo_in_circle(location, \"%s\", %d, \"%s\")%s' "
        "--scorer "
          "'_score = geo_distance(location, \"%s\", \"%s\") * 1000 * 1000'",
        grn_test_location_string(yurakucho_latitude, yurakucho_longitude),
        distance,
        approximate_type,
        gcut_data_get_boolean(data, "use-index") ? "" : " > 0",
        grn_test_location_string(yurakucho_latitude, yurakucho_longitude),
        approximate_type)));
}
Example #3
0
static void
construct_object(gconstpointer data, grn_builtin_type type, grn_obj *object)
{
  switch (type) {
  case GRN_DB_VOID:
    GRN_VOID_INIT(object);
    break;
  case GRN_DB_BOOL:
    GRN_BOOL_INIT(object, 0);
    GRN_BOOL_SET(&context, object, gcut_data_get_boolean(data, "value"));
    break;
  case GRN_DB_INT8:
    GRN_INT8_INIT(object, 0);
    GRN_INT8_SET(&context, object, gcut_data_get_int(data, "value"));
    break;
  case GRN_DB_UINT8:
    GRN_UINT8_INIT(object, 0);
    GRN_UINT8_SET(&context, object, gcut_data_get_uint(data, "value"));
    break;
  case GRN_DB_INT16:
    GRN_INT16_INIT(object, 0);
    GRN_INT16_SET(&context, object, gcut_data_get_int(data, "value"));
    break;
  case GRN_DB_UINT16:
    GRN_UINT16_INIT(object, 0);
    GRN_UINT16_SET(&context, object, gcut_data_get_uint(data, "value"));
    break;
  case GRN_DB_INT32:
    GRN_INT32_INIT(object, 0);
    GRN_INT32_SET(&context, object, gcut_data_get_int(data, "value"));
    break;
  case GRN_DB_UINT32:
    GRN_UINT32_INIT(object, 0);
    GRN_UINT32_SET(&context, object, gcut_data_get_uint(data, "value"));
    break;
  case GRN_DB_INT64:
    GRN_INT64_INIT(object, 0);
    GRN_INT64_SET(&context, object, gcut_data_get_int64(data, "value"));
    break;
  case GRN_DB_UINT64:
    GRN_UINT64_INIT(object, 0);
    GRN_UINT64_SET(&context, object, gcut_data_get_uint64(data, "value"));
    break;
  case GRN_DB_FLOAT:
    GRN_FLOAT_INIT(object, 0);
    GRN_FLOAT_SET(&context, object, gcut_data_get_double(data, "value"));
    break;
  case GRN_DB_TIME:
    GRN_TIME_INIT(object, 0);
    GRN_TIME_SET(&context, object, gcut_data_get_int64(data, "value"));
    break;
  case GRN_DB_SHORT_TEXT:
    GRN_SHORT_TEXT_INIT(object, 0);
    GRN_TEXT_SETS(&context, object, gcut_data_get_string(data, "value"));
    break;
  case GRN_DB_TEXT:
    GRN_TEXT_INIT(object, 0);
    GRN_TEXT_SETS(&context, object, gcut_data_get_string(data, "value"));
    break;
  case GRN_DB_LONG_TEXT:
    GRN_LONG_TEXT_INIT(object, 0);
    GRN_TEXT_SETS(&context, object, gcut_data_get_string(data, "value"));
    break;
  case GRN_DB_TOKYO_GEO_POINT:
    GRN_TOKYO_GEO_POINT_INIT(object, 0);
    GRN_GEO_POINT_SET(&context, object,
                      gcut_data_get_int(data, "latitude"),
                      gcut_data_get_int(data, "longitude"));
    break;
  case GRN_DB_WGS84_GEO_POINT:
    GRN_WGS84_GEO_POINT_INIT(object, 0);
    GRN_GEO_POINT_SET(&context, object,
                      gcut_data_get_int(data, "latitude"),
                      gcut_data_get_int(data, "longitude"));
    break;
  default:
    cut_fail("unknown type: %d", type);
    break;
  }
}