GVariant: use GVariantTypeInfo on internal constructors
[platform/upstream/glib.git] / glib / tests / sort.c
index 5abe5e0..bb30677 100644 (file)
@@ -12,9 +12,7 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <glib.h>
@@ -53,6 +51,12 @@ typedef struct {
   int i;
 } SortItem;
 
+typedef struct {
+  int val;
+  int i;
+  int data[16];
+} BigItem;
+
 static int
 item_compare_data (gconstpointer p1, gconstpointer p2, gpointer data)
 {
@@ -81,7 +85,31 @@ test_sort_stable (void)
     {
       g_assert_cmpint (data[i -1].val, <=, data[i].val);
       if (data[i -1].val == data[i].val)
-       g_assert_cmpint (data[i -1].i, <, data[i].i);
+        g_assert_cmpint (data[i -1].i, <, data[i].i);
+    }
+  g_free (data);
+}
+
+static void
+test_sort_big (void)
+{
+  BigItem *data;
+  gint i;
+
+  data = g_malloc (10000 * sizeof (BigItem));
+  for (i = 0; i < 10000; i++)
+    {
+      data[i].val = g_random_int_range (0, 10000);
+      data[i].i = i;
+    }
+
+  g_qsort_with_data (data, 10000, sizeof (BigItem), item_compare_data, NULL);
+
+  for (i = 1; i < 10000; i++)
+    {
+      g_assert_cmpint (data[i -1].val, <=, data[i].val);
+      if (data[i -1].val == data[i].val)
+        g_assert_cmpint (data[i -1].i, <, data[i].i);
     }
   g_free (data);
 }
@@ -93,6 +121,7 @@ main (int argc, char *argv[])
 
   g_test_add_func ("/sort/basic", test_sort_basic);
   g_test_add_func ("/sort/stable", test_sort_stable);
+  g_test_add_func ("/sort/big", test_sort_big);
 
   return g_test_run ();
 }