~ubuntu-branches/ubuntu/quantal/curl/quantal

« back to all changes in this revision

Viewing changes to tests/unit/unit1309.c

  • Committer: Bazaar Package Importer
  • Author(s): James Page
  • Date: 2011-10-20 09:28:24 UTC
  • mfrom: (3.4.22 sid)
  • Revision ID: james.westby@ubuntu.com-20111020092824-i7kfjd5we7dh57nv
Tags: 7.21.7-3ubuntu1
* Merge from Debian testing, remaining changes:
  - Drop dependencies not in main:
    + Build-Depends: Drop stunnel and libssh2-1-dev.
    + Drop libssh2-1-dev from libcurl4-openssl-dev's Depends.
  - Add new libcurl3-udeb package, stripped down for use during 
    installation (LP: #831496).
* Dropped changes:
  - debian/patches/timeout_bug_736216: applied upstream.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/***************************************************************************
 
2
 *                                  _   _ ____  _
 
3
 *  Project                     ___| | | |  _ \| |
 
4
 *                             / __| | | | |_) | |
 
5
 *                            | (__| |_| |  _ <| |___
 
6
 *                             \___|\___/|_| \_\_____|
 
7
 *
 
8
 * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
 
9
 *
 
10
 * This software is licensed as described in the file COPYING, which
 
11
 * you should have received as part of this distribution. The terms
 
12
 * are also available at http://curl.haxx.se/docs/copyright.html.
 
13
 *
 
14
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 
15
 * copies of the Software, and permit persons to whom the Software is
 
16
 * furnished to do so, under the terms of the COPYING file.
 
17
 *
 
18
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 
19
 * KIND, either express or implied.
 
20
 *
 
21
 ***************************************************************************/
 
22
#include "curlcheck.h"
 
23
 
 
24
#include "splay.h"
 
25
 
 
26
 
 
27
static CURLcode unit_setup(void)
 
28
{
 
29
  return CURLE_OK;
 
30
}
 
31
 
 
32
static void unit_stop(void)
 
33
{
 
34
 
 
35
}
 
36
 
 
37
static void splayprint(struct Curl_tree * t, int d, char output)
 
38
{
 
39
  struct Curl_tree *node;
 
40
  int i;
 
41
  int count;
 
42
  if(t == NULL)
 
43
    return;
 
44
 
 
45
  splayprint(t->larger, d+1, output);
 
46
  for(i=0; i<d; i++)
 
47
    if(output)
 
48
      printf("  ");
 
49
 
 
50
  if(output) {
 
51
    printf("%ld.%ld[%d]", (long)t->key.tv_sec,
 
52
           (long)t->key.tv_usec, i);
 
53
  }
 
54
 
 
55
  for(count=0, node = t->same; node; node = node->same, count++)
 
56
    ;
 
57
 
 
58
  if(output) {
 
59
    if(count)
 
60
      printf(" [%d more]\n", count);
 
61
    else
 
62
      printf("\n");
 
63
  }
 
64
 
 
65
  splayprint(t->smaller, d+1, output);
 
66
}
 
67
 
 
68
UNITTEST_START
 
69
 
 
70
/* number of nodes to add to the splay tree */
 
71
#define NUM_NODES 50
 
72
 
 
73
  struct Curl_tree *root;
 
74
  struct Curl_tree nodes[NUM_NODES];
 
75
  int rc;
 
76
  int i;
 
77
  root = NULL;              /* the empty tree */
 
78
 
 
79
  for(i = 0; i < NUM_NODES; i++) {
 
80
    struct timeval key;
 
81
 
 
82
    key.tv_sec = 0;
 
83
    key.tv_usec = (541*i)%1023;
 
84
 
 
85
    nodes[i].payload = (void *)key.tv_usec; /* for simplicity */
 
86
    root = Curl_splayinsert(key, root, &nodes[i]);
 
87
  }
 
88
 
 
89
  puts("Result:");
 
90
  splayprint(root, 0, 1);
 
91
 
 
92
  for(i = 0; i < NUM_NODES; i++) {
 
93
    int rem = (i+7)%NUM_NODES;
 
94
    printf("Tree look:\n");
 
95
    splayprint(root, 0, 1);
 
96
    printf("remove pointer %d, payload %ld\n", rem,
 
97
           (long)(nodes[rem].payload));
 
98
    rc = Curl_splayremovebyaddr(root, &nodes[rem], &root);
 
99
    if(rc) {
 
100
      /* failed! */
 
101
      printf("remove %d failed!\n", rem);
 
102
      fail("remove");
 
103
    }
 
104
  }
 
105
 
 
106
UNITTEST_STOP
 
107
 
 
108
 
 
109
 
 
110