File: vector-renderer.c

package info (click to toggle)
libshumate 1.6~beta-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 7,836 kB
  • sloc: ansic: 21,756; xml: 38; makefile: 18; javascript: 10
file content (82 lines) | stat: -rw-r--r-- 3,067 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#undef G_DISABLE_ASSERT

#include <glib-object.h>
#include <shumate/shumate.h>
#include "shumate/shumate-tile-private.h"
#include "shumate/shumate-vector-renderer-private.h"
#include "shumate/shumate-utils-private.h"
#include "shumate/shumate-vector-value-private.h"

static void
test_vector_renderer_render (void)
{
  GError *error = NULL;
  g_autoptr(GBytes) style_json = NULL;
  g_autoptr(GBytes) tile_data = NULL;
  g_autoptr(ShumateVectorRenderer) renderer = NULL;
  g_autoptr(ShumateTile) tile = shumate_tile_new_full (0, 0, 512, 0);
  g_autoptr(GdkPaintable) paintable = NULL;
  g_autoptr(GPtrArray) symbols = NULL;
  ShumateGridPosition source_position = { 0, 0, 0 };

  style_json = g_resources_lookup_data ("/org/gnome/shumate/Tests/style.json", G_RESOURCE_LOOKUP_FLAGS_NONE, NULL);
  g_assert_no_error (error);

  renderer = shumate_vector_renderer_new ("", g_bytes_get_data (style_json, NULL), &error);
  g_assert_no_error (error);

  tile_data = g_resources_lookup_data ("/org/gnome/shumate/Tests/0.pbf", G_RESOURCE_LOOKUP_FLAGS_NONE, NULL);
  g_assert_no_error (error);

  shumate_vector_renderer_render (renderer, tile, tile_data, &source_position, &paintable, &symbols);
  g_assert_no_error (error);
  g_assert_true (GDK_IS_PAINTABLE (paintable));
  g_assert_nonnull (symbols);
}

void
test_vector_renderer_global_state (void)
{
  GError *error = NULL;
  g_autoptr(GBytes) style_json = NULL;
  g_autoptr(ShumateVectorRenderer) renderer = NULL;
  g_auto(ShumateVectorValue) in_value = SHUMATE_VECTOR_VALUE_INIT;
  ShumateVectorValue *out_value = NULL;
  double number;

  style_json = g_resources_lookup_data ("/org/gnome/shumate/Tests/style.json", G_RESOURCE_LOOKUP_FLAGS_NONE, NULL);
  g_assert_no_error (error);

  renderer = shumate_vector_renderer_new ("", g_bytes_get_data (style_json, NULL), &error);
  g_assert_no_error (error);

  out_value = shumate_vector_renderer_get_global_state (renderer, "test_number");
  g_assert_true (shumate_vector_value_get_number (out_value, &number));
  g_assert_cmpfloat (number, ==, 1.0);

  shumate_vector_value_set_number (&in_value, 42.0);
  shumate_vector_renderer_set_global_state (renderer, "test_number", &in_value);
  shumate_vector_value_unset (&in_value);
  out_value = shumate_vector_renderer_get_global_state (renderer, "test_number");
  g_assert_true (shumate_vector_value_get_number (out_value, &number));
  g_assert_cmpfloat (number, ==, 42.0);

  shumate_vector_renderer_reset_global_state (renderer, "test_number");
  out_value = shumate_vector_renderer_get_global_state (renderer, "test_number");
  g_assert_true (shumate_vector_value_get_number (out_value, &number));
  g_assert_cmpfloat (number, ==, 1.0);

  out_value = shumate_vector_renderer_get_global_state (renderer, "non_existent_key");
  g_assert_null (out_value);
}

int
main (int argc, char *argv[])
{
  g_test_init (&argc, &argv, NULL);

  g_test_add_func ("/vector-renderer/render", test_vector_renderer_render);
  g_test_add_func ("/vector-renderer/global-state", test_vector_renderer_global_state);

  return g_test_run ();
}