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