pike.git / src / testsuite.in

version» Context lines:

pike.git/src/testsuite.in:1: - test_true([["$Id: testsuite.in,v 1.583 2003/03/04 23:33:49 mast Exp $"]]); + test_true([["$Id: testsuite.in,v 1.584 2003/03/18 16:41:56 nilsson Exp $"]]);      // This triggered a bug only if run sufficiently early.   test_compile_any([[#pike 7.2]])      cond([[all_constants()->_verify_internals]],   [[    test_do(_verify_internals())   ]]);   test_eq(1e1,10.0);   test_eq(1E1,10.0);
pike.git/src/testsuite.in:4031:   test_equal([[rows(({1,2,3,4,5,6,7,8,9}),({0,4,1}))]],[[({1,5,2})]])   test_equal([[rows(({1,2,3,4,5,6,7,8,9}),({8,3,5}))]],[[({9,4,6})]])      // column   test_equal([[column(({({1,2,3}),({5,6,7}),({8,9,0})}),0)]],[[({1,5,8})]])   test_equal([[column(({({1,2,3}),({5,6,7}),({8,9,0})}),1)]],[[({2,6,9})]])   test_equal([[column(({({1,2,3}),({5,6,7}),({8,9,0})}),2)]],[[({3,7,0})]])         // gc - ifefun(gc, - [[ +     test_true(intp(gc()));    test_any([[ array a=({0}); a[0]=a; gc(); a=0; return gc() > 0; ]],1);    test_any([[object o=class c {object o;}(); o->o=o; gc(); o=0; return gc() > 0; ]],1);    test_any([[object o=class c {object o;}(); o->o=o; gc(); o=0; return gc() > 0; ]],1);    test_any([[mapping m=([]); m[m]=m; gc(); m=0; return gc() > 0; ]],1);    test_any([[multiset m=(<>); m[m]=1; gc(); m=0; return gc() > 0; ]],1);    test_any([[{   #if !constant (_debug)    int _debug (int d) {return 0;};   #endif
pike.git/src/testsuite.in:4124:    m->self=m;       mapping q=(["foo":"bar","gazonk":1]);    m->q=q;       q+=([]);    m=0;    gc();    return sizeof(q);    ]],2) - ]]) +     - ifefun(gc, - [[ +     test_eq([[    int dummy;    gc();    function f = lambda() {    object o = class{}();    int i;    return lambda() {return i;};    }();    lambda() {dummy++;}(); // Ensure refcount garbing is done.    int n = gc();
pike.git/src/testsuite.in:4196:    object o = Dead(); o->o = Live(); o->o->o = o;    gc(); o = 0; return gc() > 0;    }]], 1)    test_any([[{    class Dead {object o;};    class Live {object o; void destroy() {}};    object o = Live(); o->o = Dead(); o->o->o = o;    gc(); o = 0; return gc() > 0;    }]], 1)    -  - ]]) -  - ifefun(gc, - [[ -  +     test_any_equal([[{    class Live {object o; void destroy() {}};    array a = set_weak_flag(({Live()}), 1);    gc(); return a;    }]], ({0}))    test_any_equal([[{    class Live {object o; void destroy() {}};    multiset l = set_weak_flag((<Live()>), 1);    gc(); return l;    }]], (<>))
pike.git/src/testsuite.in:4267:    }();    o = 0;    gc();    if (!equal (all_constants()->blatinka, ({({17})})))    error ("Contents in saved weak array zapped: %O.\n",    all_constants()->blatinka);    gc();    return all_constants()->blatinka;    }]], ({0}));    - ]]) +    test_do(add_constant("kablutt");)   test_do(add_constant("blatinka");)    - ifefun(gc, - [[ -  +     test_any([[{    class Dead {object o;};    object o = Dead(); o->o = Dead();    array a = set_weak_flag(({o}), 1);    gc(); o = 0; return gc() > 0;    }]], 1)    test_any([[{    class Dead {object o;};    class Live {object o; void destroy() {}};    object o = Live(); o->o = Dead();
pike.git/src/testsuite.in:4327:    }]], 1);    test_any([[{    multiset a = (<>), b = (<a, set_weak_flag ((<a>), 1)>);    multiset x = set_weak_flag ((<a>), 1);    a[b] = 1;    a = b = 0;    gc();    return !sizeof (x);    }]], 1);    - ]]) -  - ifefun(gc, - [[ -  +     test_any([[{    class Foo {    Foo f = this_object();    multiset(Foo) g = set_weak_flag((<this_object()>), 1);    };    multiset(Foo) x = set_weak_flag ((<Foo()>), 1);    gc();    return !sizeof (x);    }]], 1);    test_any([[{
pike.git/src/testsuite.in:4449:    int i;    class Bar    {    int j = i++; // Ensure parent pointer.    }    inherit Bar;    }")();    o = 0;    gc();    }]]); - ]]) +     - ifefun(gc, - [[ -  +     test_do([[{    mapping a = ([1:({17}),2:3,4:5,6:7,8:9]), b = a + ([]);    set_weak_flag (b, 1);    gc();    }]]);    test_do([[{    mapping a = ([1:({17})]), b = a + ([]);    set_weak_flag (b, 1);    gc();    }]]);
pike.git/src/testsuite.in:4506:    mapping b = a + ([]);    foreach (indices (a), mixed o) if (objectp (o)) destruct (o);    gc();    return sizeof (a) == 1 && sizeof (b) == 1;    }]], 1);    test_any([[{    mapping a = set_weak_flag (([17: set_weak_flag (({({17})}), 1)]), 1);    return gc() >= 2 && !sizeof (a);    }]], 1);    - ]]) -  - ifefun(gc, - [[ -  +     test_any([[{    object o = class{}();    mapping a = set_weak_flag ((["foo": o]), 1);    gc();    return sizeof (a);    }]], 1);    test_any([[{    object o = class{}();    mapping a = set_weak_flag (([o: o]), 1);    gc();
pike.git/src/testsuite.in:4550:    test_any([[{    object o = class{}();    mapping a = set_weak_flag (([o: class{}()]), 1);    return gc() >= 1 && !sizeof (a);    }]], 1);    test_any([[{    mapping a = set_weak_flag (([class{}(): class{}()]), 1);    return gc() >= 2 && !sizeof (a);    }]], 1);    - ]]) -  - ifefun(gc, - [[ -  +     test_any([[{    object o = class{}();    mapping a = set_weak_flag ((["foo": o]), 1);    destruct (o);    gc();    return !sizeof (a);    }]], 1);    test_any([[{    object o = class{}();    mapping a = set_weak_flag (([o: o]), 1);
pike.git/src/testsuite.in:4663:    object f = class    {    object o = class {}();    multiset m = set_weak_flag ((<o>), 1);    object this = this_object();    void create() {destruct (o);}    }();    f = 0;    gc();    }]]); - ]]) +     - ifefun(gc, - [[ +  test_tests([[inherit "]]SRCDIR[[/test_gc.pike";]])    -  test_tests([[ array(int) a() { -  int got_error = 0; -  array(string) destruct_order; -  add_constant ("destructing", lambda (string id) {destruct_order += ({id});}); -  add_constant ("my_error", lambda (string s, mixed... args) { -  if (!got_error) werror ("\n"); -  werror (s, @args); -  got_error++; -  }); -  program Dead = compile_string (#" -  string id; -  void create (int i) {id = sprintf (\"dead[%d]\", i);} -  mixed a = 1, b = 1; // Mustn't be zero at destruct time. -  mixed x, y, z; -  array v = set_weak_flag (({1}), 1); // Mustn't be zero at destruct time. -  array w = set_weak_flag (({0, 0}), 1); -  function(object:mixed) checkfn; -  void check_live (mapping(object:int) checked) { -  //werror (\"check_live %s\\n\", id); -  checked[this_object()] = 1; -  if (!a) my_error (id + \"->a got destructed too early.\\n\"); -  else if (!b) my_error (id + \"->b got destructed too early.\\n\"); -  else if (!v[0]) my_error (id + \"->v[0] got destructed too early.\\n\"); -  else if (functionp (checkfn) && !checkfn (this_object())) -  my_error (id + \"->checkfn failed.\\n\"); -  else { -  if (objectp (a) && !checked[a]) a->check_live (checked); -  if (objectp (b) && !checked[b]) b->check_live (checked); -  if (objectp (x) && !checked[x]) x->check_live (checked); -  if (objectp (y) && !checked[y]) y->check_live (checked); -  if (objectp (z) && !checked[z]) z->check_live (checked); -  if (objectp (v[0]) && !checked[v[0] ]) v[0]->check_live (checked); -  if (objectp (w[0]) && !checked[w[0] ]) w[0]->check_live (checked); -  if (objectp (w[1]) && !checked[w[1] ]) w[1]->check_live (checked); -  } -  //werror (\"check_live %s done\\n\", id); -  } -  "); -  add_constant ("Dead", Dead); -  program Live = compile_string (#" -  inherit Dead; -  void create (int i) {id = sprintf (\"live[%d]\", i);} -  void destroy() { -  destructing (id); -  //werror (\"destroy %s\\n\", id); -  check_live (([])); -  } -  "); -  add_constant ("Live", Live); -  program LiveNested = compile_string (#" -  inherit Live; -  string id = \"live_nested[0]\"; -  void create() {} -  void check_live_0 (mapping(object:int) checked) {check_live (checked);} -  class LiveNested1 -  { -  inherit Live; -  string id = \"live_nested[1]\"; -  void create() {} -  void check_live (mapping(object:int) checked) { -  checked[this_object()] = 1; -  if (catch (check_live_0 (checked))) -  my_error (\"Parent for %s got destructed too early.\\n\", id); -  else ::check_live (checked); -  } -  void check_live_1 (mapping(object:int) checked) {check_live (checked);} -  class LiveNested2 -  { -  inherit Live; -  string id = \"live_nested[2]\"; -  void create() {} -  void check_live (mapping(object:int) checked) { -  checked[this_object()] = 1; -  if (catch (check_live_1 (checked))) -  my_error (\"Parent for %s got destructed too early.\\n\", id); -  else ::check_live (checked); -  } -  } -  class LiveNested3 -  { -  inherit Live; -  string id = \"live_nested[3]\"; -  void create() {} -  void check_live (mapping(object:int) checked) { -  checked[this_object()] = 1; -  if (catch (check_live_1 (checked))) -  my_error (\"Parent for %s got destructed too early.\\n\", id); -  else ::check_live (checked); -  } -  } -  } -  "); -  program DeadNested = compile_string (#" -  inherit Dead; -  string id = \"dead_nested[0]\"; -  void create() {} -  void check_live_0 (mapping(object:int) checked) {check_live (checked);} -  class DeadNested1 -  { -  inherit Dead; -  string id = \"dead_nested[1]\"; -  void create() {} -  void check_live (mapping(object:int) checked) { -  checked[this_object()] = 1; -  if (catch (check_live_0 (checked))) -  my_error (\"Parent for %s got destructed too early.\\n\", id); -  else ::check_live (checked); -  } -  void check_live_1 (mapping(object:int) checked) {check_live (checked);} -  class DeadNested2 -  { -  inherit Dead; -  string id = \"dead_nested[2]\"; -  void create() {} -  void check_live (mapping(object:int) checked) { -  checked[this_object()] = 1; -  if (catch (check_live_1 (checked))) -  my_error (\"Parent for %s got destructed too early.\\n\", id); -  else ::check_live (checked); -  } -  } -  class DeadNested3 -  { -  inherit Dead; -  string id = \"dead_nested[3]\"; -  void create() {} -  void check_live (mapping(object:int) checked) { -  checked[this_object()] = 1; -  if (catch (check_live_1 (checked))) -  my_error (\"Parent for %s got destructed too early.\\n\", id); -  else ::check_live (checked); -  } -  } -  } -  "); -  add_constant ("destructing"); -  add_constant ("my_error"); -  add_constant ("Dead"); -  add_constant ("Live"); -  -  array(object) live, dead, live_nested, dead_nested; -  array(array) destruct_order_tests = ({ -  ({3, // Wanted number of live objects. -  0, // Wanted number of dead objects. -  0, // Wanted live nested objects. -  0, // Wanted dead nested objects. -  lambda() { // Function to connect them. -  live[0]->x = live[1], live[0]->a = live[2]; -  live[1]->x = live[0]; -  }}), -  ({2, 2, 0, 0, lambda() { // 1 -  live[0]->x = live[1], live[0]->a = dead[0]; -  live[1]->x = live[0]; -  dead[0]->a = dead[1]; -  dead[1]->a = dead[0]; -  }}), -  ({1, 2, 0, 0, lambda() { // 2 -  live[0]->a = live[0], live[0]->b = dead[0]; -  dead[0]->a = dead[1]; -  dead[1]->a = dead[0]; -  }}), -  ({0, 3, 0, 0, lambda() { // 3 -  dead[0]->a = dead[1]; -  dead[1]->a = dead[0]; -  dead[2]->a = dead[0], dead[2]->b = dead[2]; -  }}), -  ({3, 0, 0, 0, lambda() { // 4 -  live[0]->a = live[0], live[0]->b = live[1]; -  live[1]->a = live[2]; -  }}), -  ({1, 2, 0, 0, lambda() { // 5 -  live[0]->a = live[0], live[0]->b = dead[0]; -  dead[0]->a = dead[1]; -  }}), -  ({1, 2, 0, 0, lambda() { // 6 -  live[0]->a = live[0], live[0]->b = dead[1]; -  dead[0]->a = dead[0], dead[0]->b = dead[1]; -  dead[1]->a = dead[1]; -  }}), -  ({2, 2, 0, 0, lambda() { // 7 -  live[0]->a = live[0], live[0]->b = live[1]; -  dead[0]->a = dead[0]; -  dead[0]->b = live[1]; -  live[1]->a = dead[1]; -  dead[1]->a = dead[1]; -  }}), -  ({1, 3, 0, 0, lambda() { // 8 -  live[0]->a = live[0], live[0]->b = dead[2]; -  dead[0]->a = dead[0]; -  dead[0]->b = dead[2]; -  dead[2]->a = dead[1]; -  dead[1]->a = dead[1]; -  }}), -  ({3, 1, 0, 0, lambda() { // 9 -  live[0]->a = live[0], live[0]->b = live[1]; -  dead[0]->a = dead[0], dead[0]->b = live[1]; -  live[1]->a = live[2]; -  }}), -  ({1, 3, 0, 0, lambda() { // 10 -  live[0]->a = live[0], live[0]->b = dead[1]; -  dead[0]->a = dead[0], dead[0]->b = dead[1]; -  dead[1]->a = dead[2]; -  }}), -  ({1, 3, 0, 0, lambda() { // 11 -  live[0]->a = live[0], live[0]->b = dead[1]; -  dead[0]->a = dead[0], dead[0]->b = dead[1]; -  dead[1]->a = dead[1], dead[1]->b = dead[2]; -  dead[2]->a = dead[2]; -  }}), -  ({5, 0, 0, 0, lambda() { // 12 -  live[0]->x = live[1]; -  live[1]->x = live[0], live[1]->a = live[2]; -  live[2]->x = live[3]; -  live[3]->x = live[2], live[3]->a = live[4]; -  live[4]->a = live[4]; -  }}), -  ({3, 0, 0, 0, lambda() { // 13 -  live[0]->x = live[1], live[0]->y = live[2]; -  live[1]->x = live[2]; -  live[2]->x = live[0]; -  }}), -  ({2, 0, 0, 0, lambda() { // 14 -  live[0]->a = live[1], live[0]->b = live[0]; -  live[1]->w[0] = live[0]; -  }}), -  ({2, 0, 0, 0, lambda() { // 15 -  live[0]->a = live[0], live[0]->b = live[1]; -  live[1]->w[0] = live[0]; -  }}), -  ({2, 0, 0, 0, lambda() { // 16 -  live[0]->a = live[0], live[0]->w[0] = live[1]; -  live[1]->x = live[0]; -  }}), -  ({3, 0, 0, 0, lambda() { // 17 -  live[0]->a = live[0], live[0]->b = live[1]; -  live[1]->w[0] = live[2]; -  live[2]->a = live[2], live[2]->b = live[1]; -  }}), -  ({3, 0, 0, 0, lambda() { // 18 -  live[0]->a = live[1], live[0]->x = live[2]; -  live[1]->w[0] = live[2]; -  live[2]->x = live[0]; -  }}), -  ({4, 0, 0, 0, lambda() { // 19 -  live[0]->x = live[0], live[0]->a = live[1], live[0]->b = live[2]; -  live[1]->a = live[3]; -  live[2]->a = live[3]; -  live[3]->w[0] = live[0]; -  }}), -  ({3, 0, 0, 0, lambda() { // 20 -  live[0]->x = live[1]; -  live[1]->x = live[0], live[1]->a = live[2]; -  live[2]->w[0] = live[1]; -  }}), -  ({4, 0, 0, 0, lambda() { // 21 -  live[0]->w[0] = live[1], live[0]->a = live[3]; -  live[1]->w[0] = live[2]; -  live[2]->a = live[0], live[2]->b = live[3], live[2]->x = live[2]; -  live[3]->a = live[1]; -  }}), -  ({2, 1, 0, 0, lambda() { // 22 -  live[0]->a = dead[0], live[0]->x = live[1]; -  live[1]->x = live[0]; -  dead[0]->w[0] = live[1]; -  }}), -  ({2, 1, 0, 0, lambda() { // 23 -  live[0]->a = live[1], live[0]->b = dead[0]; -  live[1]->w[0] = dead[0]; -  dead[0]->x = live[0]; -  }}), -  ({3, 0, 0, 0, lambda() { // 24 -  live[0]->x = live[0], live[0]->a = live[1], live[0]->b = live[2]; -  live[1]->w[0] = live[0], live[1]->w[1] = live[2]; -  live[2]->a = live[1]; -  }}), -  ({3, 0, 0, 0, lambda() { // 25 -  live[0]->a = live[1]; -  live[1]->w[0] = live[2]; -  live[2]->x = live[2], live[2]->a = live[0], live[2]->b = live[1]; -  }}), -  ({3, 0, 0, 0, lambda() { // 26 -  live[0]->w[0] = live[1], live[0]->a = live[2]; -  live[1]->x = live[1], live[1]->a = live[0], live[1]->b = live[2]; -  live[2]->w[0] = live[1]; -  }}), -  ({3, 0, 0, 0, lambda() { // 27 -  live[0]->w[0] = live[1]; -  live[1]->x = live[1], live[1]->a = live[0], live[1]->b = live[2]; -  live[2]->a = live[0]; -  }}), -  ({3, 0, 0, 0, lambda() { // 28 -  live[0]->a = live[0], live[0]->v[0] = live[1]; -  live[1]->a = live[1], live[1]->v[0] = live[2]; -  live[2]->a = live[2]; -  }}), -  ({2, 2, 0, 0, lambda() { // 29 -  live[0]->x = live[1], live[0]->v[0] = dead[0]; -  live[1]->x = live[0]; -  dead[0]->a = dead[1]; -  dead[1]->a = dead[0]; -  }}), -  ({4, 0, 0, 0, lambda() { // 30 -  live[0]->a = live[1], live[0]->b = live[2], live[0]->v[0] = live[3]; -  live[1]->w[0] = live[0]; -  live[2]->a = live[3]; -  live[3]->w[0] = live[2]; -  }}), -  ({2, 1, 0, 0, lambda() { // 31 -  live[0]->a = dead[0]; -  dead[0]->a = live[0], dead[0]->b = live[1]; -  live[1]->a = live[1]; -  }}), -  ({2, 1, 0, 0, lambda() { // 32 -  live[0]->a = live[0], live[0]->b = dead[0]; -  live[1]->a = dead[0]; -  dead[0]->a = live[1]; -  }}), -  ({2, 1, 0, 0, lambda() { // 33 -  dead[0]->a = live[0]; -  live[0]->a = dead[0], live[0]->b = live[1]; -  live[1]->a = live[1]; -  }}), -  ({2, 1, 0, 0, lambda() { // 34 -  live[0]->a = dead[0]; -  dead[0]->b = live[0], dead[0]->a = live[1]; -  live[1]->a = live[1]; -  }}), -  ({2, 1, 0, 0, lambda() { // 35 -  live[0]->b = live[0], live[0]->a = dead[0]; -  live[1]->a = dead[0]; -  dead[0]->a = live[1]; -  }}), -  ({2, 1, 0, 0, lambda() { // 36 -  dead[0]->a = live[0]; -  live[0]->b = dead[0], live[0]->a = live[1]; -  live[1]->a = live[1]; -  }}), -  ({3, 0, 0, 0, lambda() { // 37 -  live[0]->a = live[0], live[0]->v[0] = live[1]; -  live[0]->checkfn = lambda (object o) { -  return o->v[0]->w[0]; -  }; -  live[1]->w[0] = live[2]; -  live[2]->a = live[1], live[2]->b = live[2]; -  }}), -  ({4, 0, 0, 0, lambda() { // 38 -  live[0]->x = live[1]; -  live[1]->x = live[2]; -  live[2]->x = live[0], live[2]->w[0] = live[3]; -  live[3]->a = live[1], live[3]->b = live[3]; -  }}), -  ({0, 2, 2, 0, lambda() { // 39 -  dead[0]->x = dead[0], dead[0]->a = live_nested[0]; -  dead[1]->x = dead[1], dead[1]->a = live_nested[1]; -  live_nested[0]->x = live_nested[1]; -  }}), -  ({0, 2, 2, 0, lambda() { // 40 -  dead[0]->x = dead[0], dead[0]->a = live_nested[0]; -  dead[1]->x = dead[1], dead[1]->a = live_nested[1]; -  live_nested[0]->w[0] = live_nested[1]; -  }}), -  ({3, 0, 3, 0, lambda() { // 41 -  live[0]->x = live[0], live[0]->a = live_nested[0]; -  live[1]->x = live[1], live[1]->a = live_nested[2]; -  live[2]->x = live[2], live[2]->a = live_nested[1]; -  live_nested[0]->x = live_nested[2]; -  }}), -  ({4, 0, 4, 0, lambda() { // 42 -  live[0]->x = live[0], live[0]->a = live_nested[0]; -  live[1]->x = live[1], live[1]->a = live_nested[1]; -  live[2]->x = live[2], live[2]->a = live_nested[2]; -  live[3]->x = live[3], live[3]->a = live_nested[3]; -  live_nested[0]->x = live_nested[3]; -  }}), -  ({3, 0, 2, 0, lambda() { // 43 -  live[0]->x = live[0], live[0]->a = live_nested[0]; -  live[1]->x = live[1], live[1]->a = live_nested[1]; -  live_nested[0]->a = live[2]; -  live[2]->x = live_nested[1]; -  }}), -  ({3, 0, 3, 0, lambda() { // 44 -  live[0]->x = live[0], live[0]->a = live_nested[0]; -  live[1]->x = live[1], live[1]->a = live_nested[2]; -  live[2]->x = live[2], live[2]->a = live_nested[1]; -  live_nested[0]->x = live_nested[2]; -  live_nested[1]->a = live[0]; -  }}), -  ({0, 2, 0, 2, lambda() { // 45 -  dead[0]->x = dead[0], dead[0]->a = dead_nested[0]; -  dead[1]->x = dead[1], dead[1]->a = dead_nested[1]; -  dead_nested[0]->x = dead_nested[1]; -  }}), -  ({0, 2, 0, 2, lambda() { // 46 -  dead[0]->x = dead[0], dead[0]->a = dead_nested[0]; -  dead[1]->x = dead[1], dead[1]->a = dead_nested[1]; -  dead_nested[0]->w[0] = dead_nested[1]; -  }}), -  ({3, 0, 0, 3, lambda() { // 47 -  live[0]->x = live[0], live[0]->a = dead_nested[0]; -  live[1]->x = live[1], live[1]->a = dead_nested[2]; -  live[2]->x = live[2], live[2]->a = dead_nested[1]; -  dead_nested[0]->x = dead_nested[2]; -  }}), -  ({4, 0, 0, 4, lambda() { // 48 -  live[0]->x = live[0], live[0]->a = dead_nested[0]; -  live[1]->x = live[1], live[1]->a = dead_nested[1]; -  live[2]->x = live[2], live[2]->a = dead_nested[2]; -  live[3]->x = live[3], live[3]->a = dead_nested[3]; -  dead_nested[0]->x = dead_nested[3]; -  }}), -  ({3, 0, 0, 2, lambda() { // 49 -  live[0]->x = live[0], live[0]->a = dead_nested[0]; -  live[1]->x = live[1], live[1]->a = dead_nested[1]; -  dead_nested[0]->a = live[2]; -  live[2]->x = dead_nested[1]; -  }}), -  ({3, 0, 0, 3, lambda() { // 50 -  live[0]->x = live[0], live[0]->a = dead_nested[0]; -  live[1]->x = live[1], live[1]->a = dead_nested[2]; -  live[2]->x = live[2], live[2]->a = dead_nested[1]; -  dead_nested[0]->x = dead_nested[2]; -  dead_nested[1]->a = live[0]; -  }}), -  ({0, 4, 2, 2, lambda() { // 51 -  dead[0]->x = dead[0], dead[0]->a = live_nested[0]; -  dead[1]->x = dead[1], dead[1]->a = live_nested[1]; -  dead[2]->x = dead[2], dead[2]->a = dead_nested[0]; -  dead[3]->x = dead[3], dead[3]->a = dead_nested[1]; -  live_nested[0]->x = dead_nested[1]; -  dead_nested[0]->x = live_nested[1]; -  }}), -  ({4, 0, 0, 0, lambda() { // 52 -  live[0]->w[0] = live[1]; -  live[1]->x = live[1], live[1]->a = live[0], live[1]->b = live[2]; -  live[2]->w[0] = live[3]; -  live[3]->x = live[3], live[3]->a = live[0]; -  }}), -  ({4, 0, 0, 0, lambda() { // 53 -  live[0]->w[0] = live[1]; -  live[1]->x = live[1], live[1]->b = live[0], live[1]->a = live[2]; -  live[2]->w[0] = live[3]; -  live[3]->x = live[3], live[3]->a = live[0]; -  }}), -  ({4, 0, 0, 0, lambda() { // 54 -  live[0]->x = live[0], live[0]->w[0] = live[1]; -  live[1]->w[0] = live[2]; -  live[2]->x = live[2], live[2]->a = live[1], live[2]->b = live[3]; -  live[3]->x = live[3], live[3]->a = live[0]; -  }}), -  ({4, 0, 0, 0, lambda() { // 55 -  live[0]->x = live[0], live[0]->w[0] = live[1]; -  live[1]->w[0] = live[2]; -  live[2]->x = live[2], live[2]->b = live[1], live[2]->a = live[3]; -  live[3]->x = live[3], live[3]->a = live[0]; -  }}), -  ({3, 0, 0, 0, lambda() { // 56 -  live[0]->a = live[2]; -  live[1]->x = live[1], live[1]->a = live[0], live[1]->b = live[2]; -  }}), -  ({3, 0, 0, 0, lambda() { // 57 -  live[0]->a = live[2]; -  live[1]->x = live[1], live[1]->b = live[0], live[1]->a = live[2]; -  }}), -  ({2, 1, 0, 0, lambda() { // 58 -  live[0]->x = live[1], live[0]->y = dead[0]; -  live[0]->checkfn = lambda (object o) { -  return o->y; -  }; -  live[1]->x = live[0]; -  dead[0]->x = dead[0]; -  }}), -  ({2, 1, 0, 0, lambda() { // 59 -  live[0]->y = live[1], live[0]->x = dead[0]; -  live[0]->checkfn = lambda (object o) { -  return o->x; -  }; -  live[1]->x = live[0]; -  dead[0]->x = dead[0]; -  }}), -  ({1, 2, 0, 2, lambda() { // 60 -  live[0]->x = dead_nested[0], live[0]->y = dead_nested[0]; -  dead[0]->x = dead[0], dead[0]->y = dead_nested[0]; -  dead[1]->x = dead[1], dead[1]->y = dead_nested[1]; -  dead_nested[0]->x = live[0], dead_nested[0]->y = dead_nested[1]; -  }}), -  ({1, 2, 0, 2, lambda() { // 61 -  live[0]->x = dead_nested[0], live[0]->y = dead_nested[0]; -  dead[0]->x = dead[0], dead[0]->y = dead_nested[0]; -  dead[1]->x = dead[1], dead[1]->y = dead_nested[1]; -  dead_nested[0]->y = live[0], dead_nested[0]->x = dead_nested[1]; -  }}), -  ({3, 0, 0, 0, lambda() { // 62 -  live[0]->x = live[1]; -  live[1]->x = live[0], live[1]->y = live[2]; -  live[2]->x = live[1]; -  }}), -  ({3, 0, 0, 0, lambda() { // 63 -  live[0]->x = live[1]; -  live[1]->y = live[0], live[1]->x = live[2]; -  live[2]->x = live[1]; -  }}), -  ({2, 0, 2, 0, lambda() { // 64 -  live[0]->x = live[1], live[0]->y = live_nested[1]; -  live[1]->w[0] = live_nested[0]; -  live_nested[0]->y = live[0]; -  }}), -  ({2, 0, 2, 0, lambda() { // 65 -  live[0]->y = live[1], live[0]->x = live_nested[1]; -  live[1]->w[0] = live_nested[0]; -  live_nested[0]->y = live[0]; -  }}), -  ({1, 1, 3, 0, lambda() { // 66 -  dead[0]->x = dead[0], dead[0]->a = live_nested[0]; -  live_nested[0]->x = live[0], live_nested[0]->y = live_nested[2]; -  live[0]->x = live_nested[1]; -  }}), -  ({1, 1, 3, 0, lambda() { // 67 -  dead[0]->x = dead[0], dead[0]->a = live_nested[0]; -  live_nested[0]->y = live[0], live_nested[0]->x = live_nested[2]; -  live[0]->x = live_nested[1]; -  }}), -  ({0, 1, 2, 2, lambda() { // 68 -  dead[0]->x = dead[0], dead[0]->a = live_nested[0]; -  live_nested[0]->y = live_nested[1], live_nested[0]->x = dead_nested[0]; -  live_nested[1]->x = dead_nested[1]; -  dead_nested[0]->x = live_nested[1]; -  }}), -  ({0, 1, 2, 2, lambda() { // 69 -  dead[0]->x = dead[0], dead[0]->a = live_nested[0]; -  live_nested[0]->x = live_nested[1], live_nested[0]->y = dead_nested[0]; -  live_nested[1]->x = dead_nested[1]; -  dead_nested[0]->x = live_nested[1]; -  }}), -  ({0, 1, 2, 2, lambda() { // 70 -  dead[0]->x = dead[0], dead[0]->a = live_nested[0]; -  live_nested[0]->x = live_nested[1], live_nested[0]->y = dead_nested[1]; -  live_nested[1]->x = dead_nested[0]; -  dead_nested[0]->x = live_nested[0]; -  }}), -  ({0, 1, 2, 2, lambda() { // 71 -  dead[0]->x = dead[0], dead[0]->a = live_nested[0]; -  live_nested[0]->y = live_nested[1], live_nested[0]->x = dead_nested[1]; -  live_nested[1]->x = dead_nested[0]; -  dead_nested[0]->x = live_nested[0]; -  }}), -  ({2, 0, 2, 0, lambda() { // 72 -  live[0]->x = live[1]; -  live[1]->x = live_nested[1]; -  live_nested[1]->x = live[0]; -  live_nested[0]->x = live[1]; -  }}), -  ({2, 0, 4, 0, lambda() { // 73 -  live[0]->x = live[1], live[0]->y = live_nested[2], live[0]->z = live_nested[3]; -  live[1]->x = live[0]; -  live_nested[1]->x = live[0]; -  }}), -  ({2, 0, 4, 0, lambda() { // 74 -  live[0]->y = live[1], live[0]->z = live_nested[2], live[0]->x = live_nested[3]; -  live[1]->x = live[0]; -  live_nested[1]->x = live[0]; -  }}), -  ({2, 0, 4, 0, lambda() { // 75 -  live[0]->z = live[1], live[0]->x = live_nested[2], live[0]->y = live_nested[3]; -  live[1]->x = live[0]; -  live_nested[1]->x = live[0]; -  }}), -  ({2, 1, 2, 0, lambda() { // 76 -  dead[0]->x = dead[0], dead[0]->a = live_nested[0]; -  live_nested[0]->y = live_nested[1], live_nested[0]->x = live[1]; -  live_nested[1]->x = live[0]; -  live[0]->x = live_nested[0]; -  live[1]->x = live[0]; -  }}), -  // ({3, 0, 0, 0, lambda() { // Not possible without weak refs directly in objects. -  // live[0]->x = live[0], live[0]->v[0] = live[1]; -  // live[1]->x = live[1], live[1]->w[0] = live[2]; -  // live[2]->x = live[2], live[2]->a = live[0]; -  // }}), -  }); -  -  int quiet = !_verbose; -  -  int tests_failed = 0; -  int tests = 0; -  for (int test = 0; test < sizeof (destruct_order_tests); test++) { -  [int nlive, int ndead, int nlnested, int ndnested, function(void:void) setup] = -  destruct_order_tests[test]; -  int objs = nlive + ndead; -  array(int) idx = indices (allocate (objs)); -  int n = 1; -  for (int f = nlive + ndead; f > 1; f--) n *= f; -  if(!quiet) -  werror ("GC destruct order test %d, %d permutations \r", test, n); -  tests += n; -  while (n--) { -  array(int) alloc_order = Array.permute (idx, n); -  array(int) create_order = ({}); -  live = allocate (nlive); -  dead = allocate (ndead); -  if (nlnested >= 1) { -  // Creating these before the Dead and Live objects below assumes -  // that the gc will start with the last created object first, so -  // the order can be controlled with those objects. -  live_nested = ({LiveNested()}); -  if (nlnested >= 2) live_nested += ({live_nested[0]->LiveNested1()}); -  if (nlnested >= 3) live_nested += ({live_nested[1]->LiveNested2()}); -  if (nlnested >= 4) live_nested += ({live_nested[1]->LiveNested3()}); -  } -  if (ndnested >= 1) { -  dead_nested = ({DeadNested()}); -  if (ndnested >= 2) dead_nested += ({dead_nested[0]->DeadNested1()}); -  if (ndnested >= 3) dead_nested += ({dead_nested[1]->DeadNested2()}); -  if (ndnested >= 4) dead_nested += ({dead_nested[1]->DeadNested3()}); -  } -  for (int i = 0; i < objs; i++) { -  int p = alloc_order[i]; -  if (p < nlive) live[p] = Live (p), create_order += ({p}); -  else p -= nlive, dead[p] = Dead (p), create_order += ({-p - 1}); -  } -  destruct_order = ({""}); // Using ({}) would alloc a new array in destructing(). -  setup(); -  live = dead = live_nested = dead_nested = 0; -  int garbed = gc() + gc(); // Second gc to garb live object leftovers. -  destruct_order = destruct_order[1..]; -  if (!got_error && (got_error = sizeof (destruct_order) != nlive + nlnested)) -  werror ("\nGC should garb %d live objects, " -  "but took %d.\n", nlive + nlnested, sizeof (destruct_order)); -  if (!got_error && (got_error = garbed < 3 * (objs + nlnested + ndnested))) -  werror ("\nGC should garb at least %d things, " -  "but took only %d.\n", 3 * (objs + nlnested + ndnested), garbed); -  if (got_error) { -  werror ("Create order was: " + -  map (create_order, lambda (int i) { -  if (i < 0) return "dead[" + (-i - 1) + "]"; -  else return "live[" + i + "]"; -  }) * ", " + "\n" -  "Destruct order was: " + destruct_order * ", " + "\n"); -  tests_failed += got_error; -  got_error = 0; -  break; -  } -  } -  } -  if (!quiet) { -  werror ("%60s\r", ""); -  } -  return ({ tests-tests_failed, tests_failed }); -  }]]) -  - ]]) -  - ifefun(gc, - [[ -  +     test_any([[mapping q=([ "t":class {} ()]); gc(); if(!objectp(q->t)) return -1; set_weak_flag(q,1); gc(); if(objectp(q->t)) return -2; return 0;]],0);       test_do([[class bar { object foo; void create(void|object tmp) { foo=tmp; } };    object o=bar(),o2=o;    for(int e=0;e<10000;e++) o=bar(o);    o2->foo=o;    o=o2=0;    gc();    ]])   
pike.git/src/testsuite.in:5535:    object o = class {    Obj a = Obj (this_object());    void destroy() {x = a;}    }();    o = 0;    gc();    return x && !x->o;    }    }()->test();    ]], 1) - ]]) +       cond([[ sizeof( cpp("__AUTO_BIGNUM__")/"__AUTO_BIGNUM__" ) == 1 ]],   [[    // Test the lexer.    test_eq("2147483648", [[ (string)0x80000000 ]])    test_eq("2147483649", [[ (string)0x80000001 ]])    test_eq("-2147483648", [[ (string)-0x80000000 ]])    test_eq("-2147483649", [[ (string)-0x80000001 ]])    test_eq("2147483648", [[ (string)-(-0x80000000) ]])    test_eq("2147483649", [[ (string)-(-0x80000001) ]])
pike.git/src/testsuite.in:8288:   test_equal(lower_case("Foo1234-*~\n\x3000"),"foo1234-*~\n\x3000")   test_equal(lower_case("foo\x13000"),"foo\x13000")   test_equal(lower_case("Foo\x13000"),"foo\x13000")   test_equal(lower_case("Foo1234-*~\n\x13000"),"foo1234-*~\n\x13000")   test_equal(lower_case("Foo\x178"),"foo\xff")   test_equal(lower_case("Foo\x39c"),"foo\x3bc")   test_equal(lower_case((string) ({   // These characters correspond to the cases in case_info.h   // Please update this and the corresponding upper_case table   // when UnicodeData.txt is changed. + // Part 1: 0x0000 - 0x0FFF   0x0000, 0x0041, 0x005b, 0x0061, 0x007b, 0x00b5, 0x00b6, 0x00c0,   0x00d7, 0x00d8, 0x00df, 0x00e0, 0x00f7, 0x00f8, 0x00ff, 0x0100,   0x0130, 0x0131, 0x0132, 0x0138, 0x0139, 0x0149, 0x014a, 0x0178,   0x0179, 0x017f, 0x0180, 0x0181, 0x0182, 0x0186, 0x0187, 0x0189,   0x018b, 0x018d, 0x018e, 0x018f, 0x0190, 0x0191, 0x0193, 0x0194,   0x0195, 0x0196, 0x0197, 0x0198, 0x019a, 0x019c, 0x019d, 0x019e,   0x019f, 0x01a0, 0x01a6, 0x01a7, 0x01a9, 0x01aa, 0x01ac, 0x01ae,   0x01af, 0x01b1, 0x01b3, 0x01b7, 0x01b8, 0x01ba, 0x01bc, 0x01be,   0x01bf, 0x01c0, 0x01c4, 0x01c5, 0x01c7, 0x01c8, 0x01ca, 0x01cb,   0x01dd, 0x01de, 0x01f0, 0x01f1, 0x01f2, 0x01f6, 0x01f7, 0x01f8,
pike.git/src/testsuite.in:8310:   0x0264, 0x0268, 0x0269, 0x026a, 0x026f, 0x0270, 0x0272, 0x0273,   0x0275, 0x0276, 0x0280, 0x0281, 0x0283, 0x0284, 0x0288, 0x0289,   0x028a, 0x028c, 0x0292, 0x0293, 0x0345, 0x0346, 0x0386, 0x0387,   0x0388, 0x038b, 0x038c, 0x038d, 0x038e, 0x0390, 0x0391, 0x03a0,   0x03a2, 0x03a3, 0x03ac, 0x03ad, 0x03b0, 0x03b1, 0x03c0, 0x03c2,   0x03c3, 0x03cc, 0x03cd, 0x03cf, 0x03d0, 0x03d1, 0x03d2, 0x03d5,   0x03d6, 0x03d7, 0x03d8, 0x03f0, 0x03f1, 0x03f2, 0x03f3, 0x03f4,   0x03f5, 0x03f6, 0x0400, 0x0410, 0x0420, 0x0430, 0x0440, 0x0450,   0x0460, 0x0482, 0x048a, 0x04c0, 0x04c1, 0x04cf, 0x04d0, 0x04f6,   0x04f8, 0x04fa, 0x0500, 0x0510, 0x0531, 0x0557, 0x0561, 0x0587, - 0x1e00, 0x1e96, 0x1e9b, 0x1e9c, 0x1ea0, 0x1efa, 0x1f00, 0x1f08, - 0x1f10, 0x1f16, 0x1f18, 0x1f1e, 0x1f20, 0x1f28, 0x1f30, 0x1f38, - 0x1f40, 0x1f46, 0x1f48, 0x1f4e, 0x1f51, 0x1f52, 0x1f53, 0x1f54, - 0x1f55, 0x1f56, 0x1f57, 0x1f58, 0x1f59, 0x1f5a, 0x1f5b, 0x1f5c, - 0x1f5d, 0x1f5e, 0x1f5f, 0x1f60, 0x1f68, 0x1f70, 0x1f72, 0x1f76, - 0x1f78, 0x1f7a, 0x1f7c, 0x1f7e, 0x1f80, 0x1f88, 0x1f90, 0x1f98, - 0x1fa0, 0x1fa8, 0x1fb0, 0x1fb2, 0x1fb3, 0x1fb4, 0x1fb8, 0x1fba, - 0x1fbc, 0x1fbd, 0x1fbe, 0x1fbf, 0x1fc3, 0x1fc4, 0x1fc8, 0x1fcc, - 0x1fcd, 0x1fd0, 0x1fd2, 0x1fd8, 0x1fda, 0x1fdd, 0x1fe0, 0x1fe2, - 0x1fe5, 0x1fe6, 0x1fe8, 0x1fea, 0x1fec, 0x1fed, 0x1ff3, 0x1ff4, - 0x1ff8, 0x1ffa, 0x1ffc, 0x1ffd, 0x2126, 0x2127, 0x212a, 0x212b, - 0x212c, 0x2160, 0x2180, 0x24b6, 0x24d0, 0x24ea, 0xff21, 0xff3b, - 0xff41, 0xff5b, - 0x010400, 0x010426, 0x010428, 0x01044e, +    })), (string) ({   0x0000, 0x0061, 0x005b, 0x0061, 0x007b, 0x00b5, 0x00b6, 0x00e0,   0x00d7, 0x00f8, 0x00df, 0x00e0, 0x00f7, 0x00f8, 0x00ff, 0x0101,   0x0069, 0x0131, 0x0133, 0x0138, 0x013a, 0x0149, 0x014b, 0x00ff,   0x017a, 0x017f, 0x0180, 0x0253, 0x0183, 0x0254, 0x0188, 0x0256,   0x018c, 0x018d, 0x01dd, 0x0259, 0x025b, 0x0192, 0x0260, 0x0263,   0x0195, 0x0269, 0x0268, 0x0199, 0x019a, 0x026f, 0x0272, 0x019e,   0x0275, 0x01a1, 0x0280, 0x01a8, 0x0283, 0x01aa, 0x01ad, 0x0288,   0x01b0, 0x028a, 0x01b4, 0x0292, 0x01b9, 0x01ba, 0x01bd, 0x01be,   0x01bf, 0x01c0, 0x01c6, 0x01c6, 0x01c9, 0x01c9, 0x01cc, 0x01cc,
pike.git/src/testsuite.in:8347:   0x0264, 0x0268, 0x0269, 0x026a, 0x026f, 0x0270, 0x0272, 0x0273,   0x0275, 0x0276, 0x0280, 0x0281, 0x0283, 0x0284, 0x0288, 0x0289,   0x028a, 0x028c, 0x0292, 0x0293, 0x0345, 0x0346, 0x03ac, 0x0387,   0x03ad, 0x038b, 0x03cc, 0x038d, 0x03cd, 0x0390, 0x03b1, 0x03c0,   0x03a2, 0x03c3, 0x03ac, 0x03ad, 0x03b0, 0x03b1, 0x03c0, 0x03c2,   0x03c3, 0x03cc, 0x03cd, 0x03cf, 0x03d0, 0x03d1, 0x03d2, 0x03d5,   0x03d6, 0x03d7, 0x03d9, 0x03f0, 0x03f1, 0x03f2, 0x03f3, 0x03b8,   0x03f5, 0x03f6, 0x0450, 0x0430, 0x0440, 0x0430, 0x0440, 0x0450,   0x0461, 0x0482, 0x048b, 0x04c0, 0x04c2, 0x04cf, 0x04d1, 0x04f6,   0x04f9, 0x04fa, 0x0501, 0x0510, 0x0561, 0x0557, 0x0561, 0x0587, + })) + test_equal(lower_case((string) ({ + // These characters correspond to the cases in case_info.h + // Please update this and the corresponding upper_case table + // when UnicodeData.txt is changed. + // Part 2: 0x1000 - + 0x1e00, 0x1e96, 0x1e9b, 0x1e9c, 0x1ea0, 0x1efa, 0x1f00, 0x1f08, + 0x1f10, 0x1f16, 0x1f18, 0x1f1e, 0x1f20, 0x1f28, 0x1f30, 0x1f38, + 0x1f40, 0x1f46, 0x1f48, 0x1f4e, 0x1f51, 0x1f52, 0x1f53, 0x1f54, + 0x1f55, 0x1f56, 0x1f57, 0x1f58, 0x1f59, 0x1f5a, 0x1f5b, 0x1f5c, + 0x1f5d, 0x1f5e, 0x1f5f, 0x1f60, 0x1f68, 0x1f70, 0x1f72, 0x1f76, + 0x1f78, 0x1f7a, 0x1f7c, 0x1f7e, 0x1f80, 0x1f88, 0x1f90, 0x1f98, + 0x1fa0, 0x1fa8, 0x1fb0, 0x1fb2, 0x1fb3, 0x1fb4, 0x1fb8, 0x1fba, + 0x1fbc, 0x1fbd, 0x1fbe, 0x1fbf, 0x1fc3, 0x1fc4, 0x1fc8, 0x1fcc, + 0x1fcd, 0x1fd0, 0x1fd2, 0x1fd8, 0x1fda, 0x1fdd, 0x1fe0, 0x1fe2, + 0x1fe5, 0x1fe6, 0x1fe8, 0x1fea, 0x1fec, 0x1fed, 0x1ff3, 0x1ff4, + 0x1ff8, 0x1ffa, 0x1ffc, 0x1ffd, 0x2126, 0x2127, 0x212a, 0x212b, + 0x212c, 0x2160, 0x2180, 0x24b6, 0x24d0, 0x24ea, 0xff21, 0xff3b, + 0xff41, 0xff5b, + 0x010400, 0x010426, 0x010428, 0x01044e, + })), (string) ({   0x1e01, 0x1e96, 0x1e9b, 0x1e9c, 0x1ea1, 0x1efa, 0x1f00, 0x1f00,   0x1f10, 0x1f16, 0x1f10, 0x1f1e, 0x1f20, 0x1f20, 0x1f30, 0x1f30,   0x1f40, 0x1f46, 0x1f40, 0x1f4e, 0x1f51, 0x1f52, 0x1f53, 0x1f54,   0x1f55, 0x1f56, 0x1f57, 0x1f58, 0x1f51, 0x1f5a, 0x1f53, 0x1f5c,   0x1f55, 0x1f5e, 0x1f57, 0x1f60, 0x1f60, 0x1f70, 0x1f72, 0x1f76,   0x1f78, 0x1f7a, 0x1f7c, 0x1f7e, 0x1f80, 0x1f80, 0x1f90, 0x1f90,   0x1fa0, 0x1fa0, 0x1fb0, 0x1fb2, 0x1fb3, 0x1fb4, 0x1fb0, 0x1f70,   0x1fb3, 0x1fbd, 0x1fbe, 0x1fbf, 0x1fc3, 0x1fc4, 0x1f72, 0x1fc3,   0x1fcd, 0x1fd0, 0x1fd2, 0x1fd0, 0x1f76, 0x1fdd, 0x1fe0, 0x1fe2,   0x1fe5, 0x1fe6, 0x1fe0, 0x1f7a, 0x1fe5, 0x1fed, 0x1ff3, 0x1ff4,   0x1f78, 0x1f7c, 0x1ff3, 0x1ffd, 0x03c9, 0x2127, 0x006b, 0x00e5,   0x212c, 0x2170, 0x2180, 0x24d0, 0x24d0, 0x24ea, 0xff41, 0xff3b,   0xff41, 0xff5b,   0x010428, 0x010426, 0x010428, 0x01044e,   }))    -  +    // - next_object   test_true(objectp(next_object()))   test_any(int e;object o=next_object(); for(e=0;e<10000 && (o || objectp(o));e++) o=next_object(o); return o,0)      // - object_program   test_true(programp(object_program(this_object())))      // - query_num_arg   test_eq(lambda(int ... q) { return query_num_arg(); }(),0)   test_eq(lambda(int ... q) { return query_num_arg(); }(1),1)
pike.git/src/testsuite.in:9048:   test_equal(upper_case("Foo1234-*~\n\x3000"),"FOO1234-*~\n\x3000")   test_equal(upper_case("fooq\x13000"),"FOOQ\x13000")   test_equal(upper_case("FooR\x13000"),"FOOR\x13000")   test_equal(upper_case("Foo1234-*~\n\x13000"),"FOO1234-*~\n\x13000")   test_equal(upper_case("Foo\xff"),"FOO\x178")   test_equal(upper_case("Foo\xb5"),"FOO\x39c")   test_equal(upper_case((string) ({   // These characters correspond to the cases in case_info.h   // Please update this and the corresponding lower_case table   // when UnicodeData.txt is changed. + // Part 1: 0x0000 - 0x0FFF   0x0000, 0x0041, 0x005b, 0x0061, 0x007b, 0x00b5, 0x00b6, 0x00c0,   0x00d7, 0x00d8, 0x00df, 0x00e0, 0x00f7, 0x00f8, 0x00ff, 0x0100,   0x0130, 0x0131, 0x0132, 0x0138, 0x0139, 0x0149, 0x014a, 0x0178,   0x0179, 0x017f, 0x0180, 0x0181, 0x0182, 0x0186, 0x0187, 0x0189,   0x018b, 0x018d, 0x018e, 0x018f, 0x0190, 0x0191, 0x0193, 0x0194,   0x0195, 0x0196, 0x0197, 0x0198, 0x019a, 0x019c, 0x019d, 0x019e,   0x019f, 0x01a0, 0x01a6, 0x01a7, 0x01a9, 0x01aa, 0x01ac, 0x01ae,   0x01af, 0x01b1, 0x01b3, 0x01b7, 0x01b8, 0x01ba, 0x01bc, 0x01be,   0x01bf, 0x01c0, 0x01c4, 0x01c5, 0x01c7, 0x01c8, 0x01ca, 0x01cb,   0x01dd, 0x01de, 0x01f0, 0x01f1, 0x01f2, 0x01f6, 0x01f7, 0x01f8,
pike.git/src/testsuite.in:9070:   0x0264, 0x0268, 0x0269, 0x026a, 0x026f, 0x0270, 0x0272, 0x0273,   0x0275, 0x0276, 0x0280, 0x0281, 0x0283, 0x0284, 0x0288, 0x0289,   0x028a, 0x028c, 0x0292, 0x0293, 0x0345, 0x0346, 0x0386, 0x0387,   0x0388, 0x038b, 0x038c, 0x038d, 0x038e, 0x0390, 0x0391, 0x03a0,   0x03a2, 0x03a3, 0x03ac, 0x03ad, 0x03b0, 0x03b1, 0x03c0, 0x03c2,   0x03c3, 0x03cc, 0x03cd, 0x03cf, 0x03d0, 0x03d1, 0x03d2, 0x03d5,   0x03d6, 0x03d7, 0x03d8, 0x03f0, 0x03f1, 0x03f2, 0x03f3, 0x03f4,   0x03f5, 0x03f6, 0x0400, 0x0410, 0x0420, 0x0430, 0x0440, 0x0450,   0x0460, 0x0482, 0x048a, 0x04c0, 0x04c1, 0x04cf, 0x04d0, 0x04f6,   0x04f8, 0x04fa, 0x0500, 0x0510, 0x0531, 0x0557, 0x0561, 0x0587, - 0x1e00, 0x1e96, 0x1e9b, 0x1e9c, 0x1ea0, 0x1efa, 0x1f00, 0x1f08, - 0x1f10, 0x1f16, 0x1f18, 0x1f1e, 0x1f20, 0x1f28, 0x1f30, 0x1f38, - 0x1f40, 0x1f46, 0x1f48, 0x1f4e, 0x1f51, 0x1f52, 0x1f53, 0x1f54, - 0x1f55, 0x1f56, 0x1f57, 0x1f58, 0x1f59, 0x1f5a, 0x1f5b, 0x1f5c, - 0x1f5d, 0x1f5e, 0x1f5f, 0x1f60, 0x1f68, 0x1f70, 0x1f72, 0x1f76, - 0x1f78, 0x1f7a, 0x1f7c, 0x1f7e, 0x1f80, 0x1f88, 0x1f90, 0x1f98, - 0x1fa0, 0x1fa8, 0x1fb0, 0x1fb2, 0x1fb3, 0x1fb4, 0x1fb8, 0x1fba, - 0x1fbc, 0x1fbd, 0x1fbe, 0x1fbf, 0x1fc3, 0x1fc4, 0x1fc8, 0x1fcc, - 0x1fcd, 0x1fd0, 0x1fd2, 0x1fd8, 0x1fda, 0x1fdd, 0x1fe0, 0x1fe2, - 0x1fe5, 0x1fe6, 0x1fe8, 0x1fea, 0x1fec, 0x1fed, 0x1ff3, 0x1ff4, - 0x1ff8, 0x1ffa, 0x1ffc, 0x1ffd, 0x2126, 0x2127, 0x212a, 0x212b, - 0x212c, 0x2160, 0x2180, 0x24b6, 0x24d0, 0x24ea, 0xff21, 0xff3b, - 0xff41, 0xff5b, - 0x010400, 0x010426, 0x010428, 0x01044e, +    })), (string) ({   0x0000, 0x0041, 0x005b, 0x0041, 0x007b, 0x039c, 0x00b6, 0x00c0,   0x00d7, 0x00d8, 0x00df, 0x00c0, 0x00f7, 0x00d8, 0x0178, 0x0100,   0x0130, 0x0049, 0x0132, 0x0138, 0x0139, 0x0149, 0x014a, 0x0178,   0x0179, 0x0053, 0x0180, 0x0181, 0x0182, 0x0186, 0x0187, 0x0189,   0x018b, 0x018d, 0x018e, 0x018f, 0x0190, 0x0191, 0x0193, 0x0194,   0x01f6, 0x0196, 0x0197, 0x0198, 0x019a, 0x019c, 0x019d, 0x0220,   0x019f, 0x01a0, 0x01a6, 0x01a7, 0x01a9, 0x01aa, 0x01ac, 0x01ae,   0x01af, 0x01b1, 0x01b3, 0x01b7, 0x01b8, 0x01ba, 0x01bc, 0x01be,   0x01f7, 0x01c0, 0x01c4, 0x01c5, 0x01c7, 0x01c8, 0x01ca, 0x01cb,
pike.git/src/testsuite.in:9107:   0x0264, 0x0197, 0x0196, 0x026a, 0x019c, 0x0270, 0x019d, 0x0273,   0x019f, 0x0276, 0x01a6, 0x0281, 0x01a9, 0x0284, 0x01ae, 0x0289,   0x01b1, 0x028c, 0x01b7, 0x0293, 0x0399, 0x0346, 0x0386, 0x0387,   0x0388, 0x038b, 0x038c, 0x038d, 0x038e, 0x0390, 0x0391, 0x03a0,   0x03a2, 0x03a3, 0x0386, 0x0388, 0x03b0, 0x0391, 0x03a0, 0x03a3,   0x03a3, 0x038c, 0x038e, 0x03cf, 0x0392, 0x0398, 0x03d2, 0x03a6,   0x03a0, 0x03d7, 0x03d8, 0x039a, 0x03a1, 0x03a3, 0x03f3, 0x03f4,   0x0395, 0x03f6, 0x0400, 0x0410, 0x0420, 0x0410, 0x0420, 0x0400,   0x0460, 0x0482, 0x048a, 0x04c0, 0x04c1, 0x04cf, 0x04d0, 0x04f6,   0x04f8, 0x04fa, 0x0500, 0x0510, 0x0531, 0x0557, 0x0531, 0x0587, + })) + test_equal(upper_case((string) ({ + // These characters correspond to the cases in case_info.h + // Please update this and the corresponding lower_case table + // when UnicodeData.txt is changed. + // Part 2: 0x1000 - + 0x1e00, 0x1e96, 0x1e9b, 0x1e9c, 0x1ea0, 0x1efa, 0x1f00, 0x1f08, + 0x1f10, 0x1f16, 0x1f18, 0x1f1e, 0x1f20, 0x1f28, 0x1f30, 0x1f38, + 0x1f40, 0x1f46, 0x1f48, 0x1f4e, 0x1f51, 0x1f52, 0x1f53, 0x1f54, + 0x1f55, 0x1f56, 0x1f57, 0x1f58, 0x1f59, 0x1f5a, 0x1f5b, 0x1f5c, + 0x1f5d, 0x1f5e, 0x1f5f, 0x1f60, 0x1f68, 0x1f70, 0x1f72, 0x1f76, + 0x1f78, 0x1f7a, 0x1f7c, 0x1f7e, 0x1f80, 0x1f88, 0x1f90, 0x1f98, + 0x1fa0, 0x1fa8, 0x1fb0, 0x1fb2, 0x1fb3, 0x1fb4, 0x1fb8, 0x1fba, + 0x1fbc, 0x1fbd, 0x1fbe, 0x1fbf, 0x1fc3, 0x1fc4, 0x1fc8, 0x1fcc, + 0x1fcd, 0x1fd0, 0x1fd2, 0x1fd8, 0x1fda, 0x1fdd, 0x1fe0, 0x1fe2, + 0x1fe5, 0x1fe6, 0x1fe8, 0x1fea, 0x1fec, 0x1fed, 0x1ff3, 0x1ff4, + 0x1ff8, 0x1ffa, 0x1ffc, 0x1ffd, 0x2126, 0x2127, 0x212a, 0x212b, + 0x212c, 0x2160, 0x2180, 0x24b6, 0x24d0, 0x24ea, 0xff21, 0xff3b, + 0xff41, 0xff5b, + 0x010400, 0x010426, 0x010428, 0x01044e, + })), (string) ({   0x1e00, 0x1e96, 0x1e60, 0x1e9c, 0x1ea0, 0x1efa, 0x1f08, 0x1f08,   0x1f18, 0x1f16, 0x1f18, 0x1f1e, 0x1f28, 0x1f28, 0x1f38, 0x1f38,   0x1f48, 0x1f46, 0x1f48, 0x1f4e, 0x1f59, 0x1f52, 0x1f5b, 0x1f54,   0x1f5d, 0x1f56, 0x1f5f, 0x1f58, 0x1f59, 0x1f5a, 0x1f5b, 0x1f5c,   0x1f5d, 0x1f5e, 0x1f5f, 0x1f68, 0x1f68, 0x1fba, 0x1fc8, 0x1fda,   0x1ff8, 0x1fea, 0x1ffa, 0x1f7e, 0x1f88, 0x1f88, 0x1f98, 0x1f98,   0x1fa8, 0x1fa8, 0x1fb8, 0x1fb2, 0x1fbc, 0x1fb4, 0x1fb8, 0x1fba,   0x1fbc, 0x1fbd, 0x0399, 0x1fbf, 0x1fcc, 0x1fc4, 0x1fc8, 0x1fcc,   0x1fcd, 0x1fd8, 0x1fd2, 0x1fd8, 0x1fda, 0x1fdd, 0x1fe8, 0x1fe2,   0x1fec, 0x1fe6, 0x1fe8, 0x1fea, 0x1fec, 0x1fed, 0x1ffc, 0x1ff4,