1 #ifndef TEST_NODESTORE
2 #define TEST_NODESTORE
3
4 #include <glib.h>
5
6 void
test_nodestore()7 test_nodestore ()
8 {
9 gint i;
10 NodeStore *store;
11 Part *part;
12 Wire *wire;
13 Node *node;
14
15 Coords p_pos = {111.,22.};
16 Coords n_pos = {111.,33.};
17 Coords w_pos = {111.,7.};
18 Coords w_len = {0.,88.};
19
20 store = node_store_new ();
21 part = part_new ();
22 wire = wire_new ();
23
24 // add one Pin with a offset that is on the wire when rotation N*Pi times
25 Pin *pin = g_new (Pin, 1);
26 pin->offset.x = n_pos.x - p_pos.x;
27 pin->offset.y = n_pos.y - p_pos.y;
28 GSList *list = NULL;
29 list = g_slist_prepend (list, pin);
30 part_set_pins (part, list);
31 g_slist_free (list);
32
33 item_data_set_pos (ITEM_DATA (part), &p_pos);
34
35 item_data_set_pos (ITEM_DATA (wire), &w_pos);
36 wire_set_length (wire, &w_len);
37
38 node_store_add_part (store, part);
39 node_store_add_wire (store, wire);
40
41 {
42 for (i=0; i<11; i++)
43 item_data_rotate (ITEM_DATA (part), 90, NULL);
44 item_data_set_pos (ITEM_DATA (part), &w_len);
45 for (i=0; i<4; i++)
46 item_data_rotate (ITEM_DATA (part), 90, NULL);
47 item_data_set_pos (ITEM_DATA (part), &n_pos);
48 for (i=0; i<7; i++)
49 item_data_rotate (ITEM_DATA (part), -90, NULL);
50 item_data_set_pos (ITEM_DATA (part), &p_pos);
51 }
52 g_assert (node_store_is_wire_at_pos (store, n_pos));
53 g_assert (node_store_is_pin_at_pos (store, n_pos));
54
55 node = node_store_get_node (store, n_pos);
56 g_assert (!node_is_empty (node));
57 g_assert (node_needs_dot (node));
58
59 node_store_remove_part (store, part);
60 node_store_remove_wire (store, wire);
61
62 g_object_unref (store);
63 }
64
65 #endif
66